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
したがって、イテレータを変更するか、熱心な実行を可能にするかを決定する際のガイダンスは素晴らしいでしょう。
感謝します、ジョシュ
Eager Execution設定は、ランタイムをリセットすることによってのみ変更できます。ランタイムをリセットするには、メニューでランタイムをリセットする方法を探します。私の場合は、Runtime->Reset all runtimes
に移動して、Yes
をクリックする必要がありました。
IPythonの実行では、コードを最初に実行したときに選択した設定が記憶されているため、少し直感に反します。つまり、Eager Executionを有効にしてTensorflowをインスタンス化した場合、そのセルからコードを削除して再度実行しても、EagerExecutionは無効になりません。同様に、Eager Executionを有効にせずにTensorflowをインスタンス化した場合、Tensorflowをインポートするセルブロックにenable Eager Executionのコードを追加し、そのセルを再実行してもEagerExecutionは有効になりません。
解決策は、セルを実行する前にランタイムをリセットしてコードを更新することです。これを行うと、Tensorflowは、EagerExecutionの適切な設定を有効または無効にして実行されます。
従った例はグラフモードで実行されるため、熱心な実行を使用する代わりに、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()
によってループ内の各バッチを取得できます。
この文字列を参照してください。おそらく役立つでしょう。
https://github.com/googlecolab/colabtools/issues/262
(これはグーグルコラボ用ですが、他の関連情報を見つけるかもしれません)
同じエラーが発生しました-Jupyterノートブックメニューから[カーネル]-> [再起動して出力をクリア]に移動する必要がありました。
他に何も私のために働いていませんでした。 (Jupyterノートブックをシャットダウンして再起動することすらありません)