私はTensorFlowを初めて使用しており、データの読み込みの仕組みについて少し戸惑っています。私はmnistデータのTensorFlowグラフを設定しましたが、モデルを保存し、グラフをロードし、予測を行い、テストの精度を計算するために別のプログラムを実行するために、 。ファイルを訓練したTensorFlowグラフに個々の例を与えるか?
トレーニンググラフの元のI/Oシステムをバイパスし、精度テストのためにテストデータの予測または画像(ラベル)タプルに画像を「注入」する方法が混乱しています。トレーニングデータを読み取るには、私はこのコードを使用しています:
_, input_data = util.read_examples(
paths_to_files,
batch_size,
shuffle=shuffle,
num_epochs=None)
feature_map = {
'label': tf.FixedLenFeature(
shape=[], dtype=tf.int64, default_value=[-1]),
'image': tf.FixedLenFeature(
shape=[NUM_PIXELS * NUM_PIXELS], dtype=tf.int64),
}
example = tf.parse_example(input_data, features=feature_map)
私はその後など、コンボリューション層に例を供給し、出力を生成します。
入力を指定してグラフをトレーニングし、グラフと重みを保存してからグラフと重みを別のスクリプトで復元して予測すると想像してください - 私は10枚の画像それらをグラフに供給して予測を生成します。どのようにして、予測を他端から出すように、これらの10個の画像を「注入」するのですか?
私はフィード辞書とプレースホルダーで遊んでいましたが、私はそれらが正しいものであるかどうかは分かりません。メモリからデータを読み取るのではなく、メモリにデータを置くことに頼っているようです例えば、テストデータのキュー。
ありがとうございます!
ok ok、それは意味があります。私の頭をラップするのに困っているのは、私のグラフをロードするときの動作です。オリジナルのutil.read_examplesノードはどこかのグラフにあり、私は何とかバイパスまたは変更しなければなりません。グラフを再配置してそれを削除し、新しい給餌ノードを追加するのが最も簡単な方法ですか? – user358829
ああ - 推論と訓練のためにわずかに異なるグラフを作成するのが一般的ですが、最も簡単な解決策は推論時に同じグラフを使用することですが、フィード推論を行うことです。あなたはdictのキーとして置き換えたいテンソルとそのテンソルの値を値として渡すことができます。あなたの例では 'sess.run([your_inference_tensors]、{example ['image']:your_image_data})'を使うことができます。より明確にするために、[Session.run()](https://www.tensorflow.org/versions/r0.11/api_docs/python/client.html#Session.run)ドキュメントを確認してください。 –