2017-09-16 4 views

答えて

0

5番目のレイヤーの入力にtf.stop_gradient()を入力するだけです。 Tensorflowは以下のエラーをバックプロパゲーションしません。 tf.stop_gradient()は、順方向の同一性関数として動作するが、逆方向の勾配を停止する操作である。ドキュメントから

tf.stop_gradient

停止勾配計算。

グラフで実行すると、このopは入力テンソルをそのまま出力します。

勾配を計算するためにopsを構築するとき、この操作は、 の入力の寄与を考慮しません。通常、 グラディエントジェネレータは、計算に に貢献した入力を再帰的に見つけることによって、 の指定された '損失'の派生を計算するためにグラフに演算を追加します。 このオペレーションをグラフに挿入すると、グラデーションジェネレータからマスクされた が入力されます。コンピューティンググラジエントのために考慮されていません。

そうでない場合は、optimizer.minimize(loss, variables_of_fifth_layer)を使用できます。ここでは、バックプロパゲーションを実行し、5番目のレイヤーの変数のみを更新しています。関心の変数を迅速に選択するために

あなたはできます

  1. は更新したい、とvariables_of_fifth_layer=tf.trainable_variables()を使用していないtrainable=Falseすべての変数として定義します。
  2. 特定のスコープを定義してレイヤを分割し、次にvariables_of_fifth_layer = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES,"scope/of/fifth/layer")
関連する問題