2016-10-18 9 views
2

Wide and Deep tutorial(Python 2.7を実行中)は、クラシファイアの代わりに回帰子を使用し、テストデータの予測を出力するように変更しました。私は現在、この(NPとして輸入numpyの)実行します。最新r0.11バージョンでTensorFlow estimator.predict:as_iterable = Trueの場合の保存

predicts = m.predict(input_fn=lambda: input_fn(df_test)) 
np.savetxt("predict.csv", predicts, delimiter=",") 

を、私は戻り値は反復可能になりますここで今後の廃止に関する警告を取得しています。これに対応するために、私は次のように試みました:

predicts = m.predict(input_fn=lambda: input_fn(df_test), as_iterable=True) 
np.savetxt("predict.csv", list(predicts), delimiter=",") 

これは望ましい効果がありませんでした。 CPUは約80%のヒット率を持ち、見た目には無期限にとどまっていました。私は最終的に30分後にデータを書き込まずにそれを殺さなければならなかった。それは何をしようとしていたのですか?

as_iterable=Trueと返された場合、これらの予測をテキストファイルにどのように出力することができますか?

UPDATE: 私はこの試みた:

predicts = m.predict(input_fn=lambda: input_fn(df_test), as_iterable=True) 
with open("predict.csv", "w") as f: 
    for x in predicts: 
     f.write(str(x)+"\n") 

をし、結果は同じように見えます。私はこれがバグだと思う。誰でもこれを確認できますか? input_fnas_iterableを使用して

答えて

1

は少し危険です:input_fnがない場合、すべてのas_iterableは喜んで、通常は何度も何度も同じ入力を走る、より多くの出力を生成します、新しいデータが不足して文句を言います。

WideおよびDeepチュートリアルでinput_fnを見ると、キューがないことがわかります。データは定数に直接格納されます。ですから、あなたが何度も頻繁にテンソルを引いても、あなたはいつもデータを取得します。

as_iterableは、新しいデータを取得する限り、入力を引き出します。この場合、それは永遠に意味します。

これはバグです。修正する必要があります。

+0

返信いただきありがとうございます。私は入力の動作を変更していないので、起こっている可能性があります。今のところは、 'as_iterable = False'というハードを使用しますが、キューイングおよび/またはinput_fnとは異なるスキームで動作させる方法を検討します。 – verbamour

+0

これはすぐに修正される予定です。input_fnにキューがない場合は検出し、見つからなければ1回の呼び出しで停止します。 – wicke

関連する問題