2017-04-05 15 views
1

最近まで、TFのすべてのコードでは、入力を表すのにtf.placeholderが使用されていました。それは私のネットワークに任意の長さのバッチを供給し、異なる場所で同じコードを使用できるようにするので、非常に便利です(トレーニング、テスト、予測など)TensorFlowプレースホルダなしでの作業

feed_dictがそうであることを知った後私は変更したいと思うパイプラインを使用し始めました。パイプラインは、基本的にプレースホルダの代わりにtf.Variableを使用しました。各変数は固定長で、テンソルで、ネットワークの入力として使用されるバッチを表します。

私の問題は、プレースホルダが「アンタイド」で、データをフィードする必要がありましたが、パイプラインは入力データにバインドされています。したがって、たとえば、トレーニングデータをサイズ10のバッチで使用するようにパイプラインを設定した後は、テストセットのデータを12の例のバッチで使用することはできません。

できますか?

プレースホルダなしで作業する適切な方法は何ですか?

+0

あなたは、画像データやテキストで作業している場合には興味があるだけ? – Aaron

+0

早速回答してくれないことを申し訳ありません。私は物理的な信号データを扱っていました。 – AkiRoss

答えて

0

プレースホルダなしで作業するための他の方法は、固定サイズの変数よりも見つかりませんでした。

明らかに、公式ドキュメントで提案されたパイプライン以外のパイプラインを使用する推奨方法はありません。reading data

0

cifar10例ではプレースホルダを使用していません。 tf.FixedLengthRecordReaderとtf.train.shuffle_batchを使用します。生成された入力画像のバッチは、プレースホルダなしでCNNに直接渡されます。

tensorflowの公式のチュートリアルを参照してください、それはPythonのコードですしてください:

https://github.com/tensorflow/models/blob/master/tutorials/image/cifar10/cifar10_train.py

また、テスト時に、あなたは電車のデータからバッチ数が異なる試験データのパイプラインをリンクすることができます。

評価コードを参照してください: https://github.com/tensorflow/models/blob/master/tutorials/image/cifar10/cifar10_eval.py

関連する問題