問題タブ [pre-trained-model]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
tensorflow - 訓練可能な変数を訓練不可能にすることは可能ですか?
スコープにトレーニング可能な変数を作成しました。その後、同じスコープに入り、スコープを に設定し、同じ変数を取得するためにreuse_variables
使用しました。get_variable
ただし、変数の trainable プロパティを に設定できませんFalse
。私のget_variable
行は次のようなものです:
しかし、変数'weights'
はまだ の出力にありtf.trainable_variables
ます。
を使用して共有変数のtrainable
フラグを設定できますか?False
get_variable
これを行う理由は、モデルで VGG ネットから事前にトレーニングされた低レベル フィルターを再利用しようとしており、以前のようにグラフを作成し、重み変数を取得し、VGG フィルター値を割り当てたいからです。重み変数に追加し、次のトレーニング ステップでそれらを固定したままにします。
python - Tensorflow で事前トレーニング済みの LSTM モデルの重みを読み込む方法
Tensorflow で事前トレーニング済みの重みを使用して LSTM モデルを実装したいと考えています。これらの重みは、Caffee または Torch から取得できます。ファイル にやなどの
LSTM セルがあることがわかりました。しかし、これらの LSTM セルの事前トレーニング済みの重みを読み込むにはどうすればよいでしょうか。rnn_cell.py
rnn_cell.BasicLSTMCell
rnn_cell.MultiRNNCell
python - Tensorflow - 転移学習の実装 (セマンティック セグメンテーション)
私は、自分のデータ (2 つのクラス、したがって、ピクセルごとのバイナリ分類) のセマンティック セグメンテーションのために、CNN アーキテクチャ (事前トレーニング済みの VGG16 モデルを使用した FCN-8s モデル) の実装に取り組んでいます。
私がこれをどのように行うつもりかは次のとおりです。
- 事前トレーニング済みのモデルに重みをロードします
- FCN に変換するための追加の上位レイヤーの追加/削除
- 事前トレーニング済みモデルの下位レイヤーをフリーズします (トレーニング フェーズ中に更新しないようにするため)。
- 特定のデータセットでネットワークをトレーニングする
これが正しいと仮定すると、テンソルフロー モデルの下位レイヤーをフリーズするにはどうすればよいですか? (特定の実装の詳細を探しています) TensorFlow チュートリアルでのインセプションの再トレーニングを見ましたが、まだよくわかりません。
これは私が念頭に置いているワークフローです:
既存の事前トレーニング済みモデルでデータを実行し、トレーニングせずに機能出力を抽出します。(どうやって?)
これらの機能の出力を、上位層を含む別のネットワークにフィードし、トレーニングに取り掛かります。
どんな提案も役に立ちます!
そうでなければ、私が間違っているとしたら、これをどのように考えればよいでしょうか?
アップデート:
以下のchasp255の提案を取り上げ、モデルの下位レイヤーを「フリーズ」するためにtf.stop_gradientを使用しようとしました。明らかに、私の実装には何か問題があります。可能な代替/提案?
このモデルは、FCN (セマンティック セグメンテーション用) 論文に基づいて構築されています。logits
モデル アーキテクチャ、つまり機能から抽出し、最初にloss
関数に直接入力して、softmax 分類器で最小化します。(ピクセルごとの分類)deconv_1
は、形状の[batch, h, w, num_classes] = [1, 750, 750, 2]
実装のロジット テンソルです。
次に、これらのグラフ操作を次のように実行します。
このようにトレーニング サイクルを実行すると、損失値の最適化が行われません。これは、tf.stop_gradient
Op.
詳細については、以下の私の損失関数:
tensorflow - get_collection で使用する tensorflow プレースホルダーの使用方法
そのため、フィード変数に問題があります。エポックにわたってモデルの重みとバイアスをフリーズしたい。次の変数があります。
たとえば、最初の 10 エポックで [wc1, bc1] をトレーニングし、次のエポックで [wc2, bc2] などをトレーニングします。この目的のために、変数コレクションを作成しました。
コレクション名のプレースホルダーを作成します。
次に、オプティマイザーで取得してみます。
フィード データ:
そして、私はエラーが発生します:
では、セッション中にトレーニング変数を変更する方法はありますか?
ありがとう。
python-2.7 - 事前トレーニング済みチェックポイント (.chkpt) と GraphDef (.pb)
Google がテンソルフローでリリースした classify_image_graph_def.pb (inception-2015-12-05.tgz) のような事前トレーニング済みのネットワークを使用して、新しいデータセットの特徴を抽出しようとしています。classify_image_graph_def.pb (inception_v3.pb) を使用して新しいデータセットのフラクチャを抽出するチュートリアルがtransfer_learningにあるので、私はそれに成功しました。
ただし、事前トレーニング済みモデルの新しいリリースでは、tensorflow は Graph_def (例: resnet_v1_152.pb) の代わりにチェック ポイント ファイル (例: resnet_v1_152.ckpt) を提供します。これらのチェックポイント ファイルを使用して、 transfer_learningのように機能を抽出する方法を考えていました。どなたか道順を教えていただけませんか?