与えられた演算(通常は損失)が依存するすべての変数を見つける方法はありますか? これを使用して、さまざまなset().intersection()
の組み合わせを使用して、このコレクションをoptimizer.minimize()
またはtf.gradients()
に渡します。テンソルフロー演算が依存するすべての変数を見つける
これまでのところ、私はop.op.inputs
を発見し、その上の簡単なBFSを試してみましたが、tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES)
またはslim.get_variables()
によって返された私は、「Tensor.op._idに対応する対応関係があるように思えるんVariable
オブジェクト時にチャンスはありませんand
Variables.op._id`フィールドがありますが、それは私が頼りにするべきものなのかどうかはわかりません。
これをやりたいとは思わないでしょうか? 私ははもちろん私のグラフを構築する間に変数の私の別々のセットを細かく構築することができますが、私はモデルを変更すると何かを見逃しやすいでしょう。
documentation fortf.Variable.op
これは無限ループに問題がある可能性があります...私はこれを試み、それは掛かった。どの 'Op'sがすでに' queue'に入っていたかを追跡する 'set'を追加しました。すぐに戻りました。 – eqzx
あなたは大丈夫です!グラフにサイクルが含まれていれば、元のコードは失敗します。私はそれを更新して 'visited'セットを使用しました。 – mrry