web-dev-qa-db-ja.com

エラー:TensorFlow:プログラムの起動時にtf.enable_eager_executionを呼び出す必要があります

github からコードを変更しようとしています:

このエラーが発生します:

_tf.enable_eager_execution must be called at program startup.
_

そして私はそれがこれらのコード行から来ていると思います:

_from __future__ import print_function
import make_dataset

import tensorflow as tf
import tensorflow.contrib.eager as tfe
tf.enable_eager_execution()
_

さらに、私が熱心な実行が必要だと思う理由は、私のwithtf.sessionブロックにあるためです。

sessとしてtf.Session()を使用:

_# Run the initializer
sess.run(iterator.initializer)

for step in range(1, num_steps+1):
    batch_x, batch_y = myDataset.batch(4)#line where error occurs
    # Run optimization op (backprop)
    sess.run(train_op, feed_dict={X: batch_x, Y: batch_y})
_

エラーが発生します:

RuntimeError: dataset.__iter__() is only supported when eager execution is enabled

したがって、イテレータを変更するか、熱心な実行を可能にするかを決定する際のガイダンスは素晴らしいでしょう。

感謝します、ジョシュ

4
Joshua Ong

Eager Execution設定は、ランタイムをリセットすることによってのみ変更できます。ランタイムをリセットするには、メニューでランタイムをリセットする方法を探します。私の場合は、Runtime->Reset all runtimesに移動して、Yesをクリックする必要がありました。

IPythonの実行では、コードを最初に実行したときに選択した設定が記憶されているため、少し直感に反します。つまり、Eager Executionを有効にしてTensorflowをインスタンス化した場合、そのセルからコードを削除して再度実行しても、EagerExecutionは無効になりません。同様に、Eager Executionを有効にせずにTensorflowをインスタンス化した場合、Tensorflowをインポートするセルブロックにenable Eager Executionのコードを追加し、そのセルを再実行してもEagerExecutionは有効になりません。

解決策は、セルを実行する前にランタイムをリセットしてコードを更新することです。これを行うと、Tensorflowは、EagerExecutionの適切な設定を有効または無効にして実行されます。

4
hexicle

従った例はグラフモードで実行されるため、熱心な実行を使用する代わりに、myDatasetをデバッグすることをお勧めします。 myDatasetが_tf.data.Dataset_オブジェクトの場合。そのbatchメソッドは_tf.data.Dataset_を返しますが、これは_batch_x, batch_y_に解凍できません。つまり、dataset.__iter__()はグラフモードではサポートされていません。

1つのオプションは、 ガイド のチュートリアルに従うことです。 「バッチ処理された」データセットから_make_one_shot_iterator_または_make_initializable_iterator_(sess.run(iterator.initializer, ...)を介して初期化する必要があります)を実行できます。次に、batch_x, batch_y = iterator.get_next()によってループ内の各バッチを取得できます。

2
Y. Luo

この文字列を参照してください。おそらく役立つでしょう。

https://github.com/googlecolab/colabtools/issues/262

(これはグーグルコラボ用ですが、他の関連情報を見つけるかもしれません)

0
user8771957

同じエラーが発生しました-Jupyterノートブックメニューから[カーネル]-> [再起動して出力をクリア]に移動する必要がありました。

他に何も私のために働いていませんでした。 (Jupyterノートブックをシャットダウンして再起動することすらありません)

0
David