私は句読点を予測するためにtf.estimator APIを使用しています。私はTFRecordsとtf.train.shuffle_batch
を使って前処理されたデータでそれを訓練しました。今私は予測をしたい。静的なNumPyデータをtf.constant
に送り、これをinput_fn
から返すことができます。TensorFlow Estimator APIを使用して非同期予測を実行するにはどうすればよいですか?
しかし、私はシーケンスデータを扱っており、一度に1つの例をフィードする必要があり、次の入力は以前の出力に依存しています。私はまた、HTTPリクエストを介してデータ入力を処理できるようにしたい。
estimator.predict
が呼び出されるたびに、チェックポイントを再ロードしてグラフ全体を再作成します。これは遅くて高価です。ですから、input_fn
にデータを動的にフィードできるようにする必要があります。
私の現在の試みは、ほぼこれです:
feature_input = tf.placeholder(tf.int32, shape=[1, MAX_SUBSEQUENCE_LEN])
q = tf.FIFOQueue(1, tf.int32, shapes=[[1, MAX_SUBSEQUENCE_LEN]])
enqueue_op = q.enqueue(feature_input)
def input_fn():
return q.dequeue()
estimator = tf.estimator.Estimator(model_fn, model_dir=model_file)
predictor = estimator.predict(input_fn=input_fn)
sess = tf.Session()
output = None
while True:
x = get_numpy_data(x, output)
if x is None:
break
sess.run(enqueue_op, {feature_input: x})
output = predictor.next()
save_to_file(output)
sess.close()
私は、次のエラーを取得していますが: ValueError: Input graph and Layer graph are not the same: Tensor("EmbedSequence/embedding_lookup:0", shape=(1, 200, 128), dtype=float32) is not from the passed-in graph.
どのように私は非同期的で予測の1を取得するためにinput_fn
を通じて私の既存のグラフにデータをプラグインすることができます時間?