[解決済み] tf.reset_default_graph() の使用方法
質問
を使おうとすると、必ず
tf.reset_default_graph()
このようなエラーが発生します。
IndexError: list index out of range
または `` です。コードのどの部分でこれを使うべきですか?いつこれを使うべきですか?
編集してください。
コードを更新しましたが、まだエラーは発生します。
def evaluate():
with tf.name_scope("loss"):
global x # x is a tf.placeholder()
xentropy = tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=neural_network(x))
loss = tf.reduce_mean(xentropy, name="loss")
with tf.name_scope("train"):
optimizer = tf.train.AdamOptimizer()
training_op = optimizer.minimize(loss)
with tf.name_scope("exec"):
with tf.Session() as sess:
for i in range(1, 2):
sess.run(tf.global_variables_initializer())
sess.run(training_op, feed_dict={x: np.array(train_data).reshape([-1, 1]), y: label})
print "Training " + str(i)
saver = tf.train.Saver()
saver.save(sess, "saved_models/testing")
print "Model Saved."
def predict():
with tf.name_scope("predict"):
tf.reset_default_graph()
with tf.Session() as sess:
saver = tf.train.import_meta_graph("saved_models/testing.meta")
saver.restore(sess, "saved_models/testing")
output_ = tf.get_default_graph().get_tensor_by_name('output_layer:0')
print sess.run(output_, feed_dict={x: np.array([12003]).reshape([-1, 1])})
def main():
print "Starting Program..."
evaluate()
writer = tf.summary.FileWriter("mygraph/logs", tf.get_default_graph())
predict()
更新したコードからtf.reset_default_graph()を削除すると、以下のエラーが発生します。
ValueError: cannot add op with name hidden_layer1/kernel/Adam as that name is already used
私の現在の理解では、tf.reset_default_graph()はすべてのグラフを削除するので、上記のようなエラーは避けられました(
ValueError: cannot add op with name hidden_layer1/kernel/Adam as that name is already used
)
解決方法は?
このような使い方があるのでしょう。
import tensorflow as tf
a = tf.constant(1)
with tf.Session() as sess:
tf.reset_default_graph()
セッションで使うからエラーになるんだろ。から
tf.reset_default_graph()
のドキュメントをご覧ください。
tf.Sessionまたはtf.InteractiveSessionが存在する時にこの関数を呼び出すと がアクティブな場合、未定義の動作になります。以前に作成した この関数を呼び出した後にtf.Operationまたはtf.Tensorオブジェクトを呼び出すと は、未定義の動作となります。
tf.reset_default_graph()
は、jupyter notebookで実験している間、テスト段階で(少なくとも私にとっては)役に立ちます。しかし、私は本番で使ったことがなく、そこでどのように役立つかはわかりません。
ノートブックにありそうな例です。
import tensorflow as tf
# create some graph
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print sess.run(...)
しかし、別のグラフを作成してtensorboardで可視化すると、古いノードと新しいノードが表示されます。これを解決するには、カーネルを再起動し、次のセルだけを実行すればよい。しかし、私はただそうすることができる。
tf.reset_default_graph()
# create a new graph
with tf.Session() as sess:
print sess.run(...)
OPがコードを追加した後に編集 :
with tf.name_scope("predict"):
tf.reset_default_graph()
おおよそこんな感じです。あなたのコードが失敗するのは
tf.name_scope
はすでにグラフに何かを追加しています。この "adding something to the graph" の中にいるとき、TFにグラフを完全に削除するように言いますが、何かを追加するのに忙しいので、削除することができません。
関連
-
[解決済み】お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
[解決済み】TensorFlowでtf.gradientsが動作する方法
-
[解決済み] Kerasにおける "Flatten "の役割とは?
-
[解決済み] RuntimeError: 次元が範囲外([-1, 0]の範囲にあると期待されたが、1が得られた)
-
[解決済み] tf.reset_default_graph() の使用方法
-
[解決済み] kerasのtrain_on_batch()の使い道は?
-
[解決済み] 学習後のモデルを保存・復元する方法は?
-
[解決済み】ニューラルネットワークにおけるバイアスの役割とは?[クローズド]
-
[解決済み】同じ問題で binary_crossentropy と categorical_crossentropy が異なる性能を示すのはなぜか?
-
[解決済み】機械学習モデルの損失と精度の解釈の仕方【終了しました
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Keras - KerasRegressorを使用して予測を実行する方法は?
-
[解決済み] RuntimeError: 次元が範囲外([-1, 0]の範囲にあると期待されたが、1が得られた)
-
[解決済み] イプシロン貪欲q学習におけるイプシロンと学習率の減衰について
-
[解決済み] エアフローとKubeflowパイプラインの違いは何ですか?
-
[解決済み] サポートベクターマシンに対する人工ニューラルネットワークの優位性は何ですか?[終了しました]
-
[解決済み】線形回帰とロジスティック回帰の違いは何ですか?[クローズド]
-
[解決済み】同じ問題で binary_crossentropy と categorical_crossentropy が異なる性能を示すのはなぜか?
-
[解決済み】教師あり学習と教師なし学習の違いは何ですか?[終了しました]
-
[解決済み] Diablo 2をプレイするための人工ニューラルネットワークを視覚的に学習させる方法とは?
-
[解決済み] Appleはどのように電子メールの日付、時間、アドレスを見つけるのですか?