2017-05-23 4 views
0

私はで読んだtfrecordsファイルを作成しました。これはネットワークのトレーニングに最適です。しかし、私は動的生産のためのバッチサイズを減らすために、またどのように供給するようにしてtf.train.import_meta_graphで訓練されたグラフをインポートするために、私が試したtf.train.import_meta_graphtf.train.shuffle_batchプロダクション用のネットワークを作る方法

reader = tf.TFRecordReader() 
data = tf.train.shuffle_batch(...) 
# batch_size 100 

IS_TRAINING = tf.placeholder(tf.bool, shape=(), name="is_training") 
# tried constant, variable and placeholder with no luck 

custom_data = tf.Variable(...) 

_data = tf.cond(
    IS_TRAINING, 
    lambda: data, 
    lambda: custom_data, 
    name="condition" 
) 

coord = tf.train.Coordinator() 
threads = tf.train.start_queue_runners(coord=coord, sess=sess) 

# network graph 

coord.request_stop() 
coord.join(threads) 

sess.close() 

でグラフをロードするいくつかの変数を上書きするかどうかはわかりませんし、 feed_dictを使用して、IS_TRAININGをオーバーライドしようとしました。そのグラフでは、feed_dictでもフィードしているデータが使用されています。しかし、これまでのところ何も働いていません。

sess.run([variable], feed_dict={IS_TRAINING:False, custom_data:data}) 
+1

メタグラフをインポートすると、モデルのグラフ定義(PBファイルの解析とインポートと同様の効果)だけでなく、保護者のような他のものも得られます。 meta_graphのインポートはtfrecordのパイプラインとはかなり異なっていると思います。 DataSetクラスを使用してTFRecordファイルを読み込むことを検討することができます。これらのファイルは、データを並行して読み込み、デフォルトでシャッフルされるため、より洗練されたコードになります。モデルを評価や訓練のために変更するには、単に「真」または「偽」を取るモデルを構築することを検討することができます。 – kwotsin

答えて

1

あなたはtensorflowレコードリーダーを使用して、サンプルをロードしている場合にのみ使用されます(あなたがあなたのデータをロードしていなく手動TFレコードがファイルからのあなたがサンプルをロードするためにQueueRunnerの使用を排除したいと思う場合)、代わりにもうシャッフルバッチを使用しないように、あなたのモデルを変更し

sess.run([ops], feed_dict={data:my_custom_data})

にデータをロードし、これはチェックポイントをロードするためにあなたの能力に影響を与えるべきではない:

data = tf.placeholder(tf.float32, shape=(input_shape), name="data") 

ちょうどモデルを変更することが容易になるだろうむしろあなたが示したように条件付き代入を使うよりも。しかし、条件文を使用する場合は、custom_dataは変数ではなくプレースホルダにする必要があります。

どちらの場合でもコードを動作させたい場合は、グラフ実行時ではなく、グラフを定義するポイントでPython if文を使用します。

+0

返信いただきありがとうございます!トレーニングのために、私は 'tfRecord'ファイルを使いました。しかし、実際には、私は生産のためにそれを使用する必要はありません。それがどのように 'tf.train.import_meta_graph'でうまくいくのか分かりませんか? – totoislost

+1

良い質問ですが、それは問題かもしれません。メタグラフをインポートするのではなく、グラフをプログラムで構築するコードを再実行するだけで、変数ではなくOPSだけが変更されたため、どちらのグラフでも復元が機能するはずです。 –

+1

あなたのコメントは正しい考えを持っていました。詳細はこちら[https://stackoverflow.com/questions/43708616/tensorflow-inference] – totoislost

関連する問題