私はテンソルフローモデルを持っていますが、これには.metaとチェックポイントファイルがあります。モデルの作成方法を知らなくてもinput feed_dictを作成できるように、モデルを構築するコードを見ずに、モデルが必要とするすべてのプレースホルダを出力しようとしています。私は上記のように、すべての変数を印刷する際の基準については、ここではモデル構築のコードは、(別のファイルに)あるTensorflowはメタグラフからすべてのプレースホルダ変数名を出力します
def save():
import tensorflow as tf
v1 = tf.placeholder(tf.float32, name="v1")
v2 = tf.placeholder(tf.float32, name="v2")
v3 = tf.multiply(v1, v2)
vx = tf.Variable(10.0, name="vx")
v4 = tf.add(v3, vx, name="v4")
saver = tf.train.Saver()
sess = tf.Session()
sess.run(tf.initialize_all_variables())
sess.run(vx.assign(tf.add(vx, vx)))
result = sess.run(v4, feed_dict={v1:12.0, v2:3.3})
print(result)
saver.save(sess, "./model_ex1")
今、別のファイルに、私は、しかし
def restore():
import tensorflow as tf
saver = tf.train.import_meta_graph("./model_ex1.meta")
print(tf.get_default_graph().get_all_collection_keys())
for v in tf.get_default_graph().get_collection("variables"):
print(v)
for v in tf.get_default_graph().get_collection("trainable_variables"):
print(v)
sess = tf.Session()
saver.restore(sess, "./model_ex1")
result = sess.run("v4:0", feed_dict={"v1:0": 12.0, "v2:0": 4.0})
print(result)
を復元するために、次のコードを持っています私はどこでも変数名として "v1:0"と "v2:0"が表示されません。モデルを作成するためのコードを見ずにプレースホルダーのテンソル名を特定する方法唯一tf.Variable
オブジェクトは"variables"
(又は"trainable_variables"
)コレクションに追加されるのに対し、
第二の溶液は、実際に私のために動作しません:「O peration 'オブジェクトには属性' op 'がありません。これは、テンソルフロー1.2.1とPython 3.6を使用しています。 – buechel
あなたは絶対に正しいです!適切な['Operation.type'](https://www.tensorflow.org/api_docs/python/tf/Operation#type)プロパティを使用するように変更しました。 – mrry
このデフォルトのコレクションの非対称性(プレースホルダーが自動的にコレクションに追加されない)の理由はありますか?リロードされたモデルを実行するには、プレースホルダを復元できるように思えます。 – Alex