Tensorflow reports error Attempting to use uninitialized value ***/conv2d/kernel Solve
SSDを自分で再現してみたところ、列車はすべてうまくいったのですが、モデルを保存するときにこの問題にぶつかりました。
丸々24時間かかってしまい、一時は自分のコードの根本的なロジックがおかしいのではないかと自暴自棄になっていましたので、この問題を解決するまでの過程を記録しておきます。
まず、解決策です。
#-------------------
#(1) There should be no network variables here
#-------------------
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
...
...
saver = tf.train.
saver.save(sess, os.path.join('. /save/', 'ckp'), global_step=1)
#-----------------
#saver.sava() should be sess here, not tf.Session()
#-----------------
エラー報告の画面です。
試み1。 をまず読みます。 stackoverflowの質問 を使って、初期化されていないlocal_variablesがあると言って、同じくこの問題を抱えている兄に遭遇しました。
tf.local_variables_initializer()
無効です。
2をお試しください。 そして、私がウェブからコピーした方法を見つけ、モデルを格納し、これを読みます。
saver.save(tf.Session(), os.path.join('. /save/', 'ckp'), global_step=1)
これは、元のプロジェクトでは
with tf.Session() sess:
training/storage モジュールをラップします。ただし、ラップした場合(一番上のコードブロックのように)には は、新しいトークバックを開くことと同じです これは、新しく開いたセッションに変数を保存するものです。これは明らかに間違っています。変数を現在のトークバックに格納する必要がありますが、それはsessであり、sessに変更する必要があります。
このように変更しました。それでもエラーは報告されます。
3をお試しください。 ループ内の変数がすべて正常でなければ、モデルを正しく学習させることができないからです。変数をプリントアウトしてみたら、それも全部正常でした。問題はループの外の変数にあるのでしょう。
すると、一番上のブロックの(1)の位置で、自作のssd_netネットワークモデルを呼び出していることが明らかになったのです。最初はground_truthをバインドするモジュールに6つのレイヤーを提供し、次の処理のためにいくつかのテンソル形状を得るために使用されていたのです。
への呼び出しは、明らかに
tf.global_variables_initializer()
その後、冒頭で呼ばれたssd_netモデルのパラメータに異常が発生します(何が異常かはまだ考え中)。
そこで、コードの構造を変えて、処理の一部を損失関数モジュールに入れ、ループの外側にあるコードは3行だけにしました
最後に、try 2とtry 3を同時に行うと、問題は解決しました。
しかし、その過程はもう少し複雑でした。トライ2がうまくいかなかったので、コードをロールバックしました。そして、トライ3でもまだ同じエラーが出ることがわかり、またコードをロールバックしました。つまり、何度も試行錯誤とロールバックを繰り返したわけです。ネットワーク変数を1つずつプリントアウトして比較したりもしました。最終的に、2つの場所で同時に間違っていて、どちらのエラーも同じエラーを報告することに気がつきました。
tensorflowの理解が少し深まったような気がします。
お祝いに、美味しいご飯を食べましょう
関連
-
[解決済み】TensorFlowで*.pbファイルを使用する方法とその動作は?
-
[解決済み】TensorFlowでtf.get_collection()を理解する方法
-
[解決済み] tensorboard: コマンドが見つかりません。
-
[解決済み] Anaconda環境からTensorFlowをアンインストールする
-
[解決済み] ModuleNotFoundError: tensorboard' という名前のモジュールはありません。
-
[解決済み] Tensorflowにおけるglobal_stepの意味とは?
-
[解決済み] tensorflowの.pbと.pbtxtの違い?
-
[解決済み] 入力パイプラインは、keras.utils.Sequenceオブジェクトまたはtf.data.Datasetを使用しますか?
-
解決方法 TensorFlowのネイティブランタイムのロードに失敗しました。
-
Python tensorflow ModuleNotFoundError: tensorflow.contrib'という名前のモジュールはありません。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] TensorflowとKerasを使用して、学習精度よりも高い検証精度を実現。
-
[解決済み] モジュール 'tensorflow' には属性 'contrib' がありません。
-
tensorflowのCUDAドライババージョンがCUDAランタイムバージョンに対して不足している 問題が解決された
-
AttributeError: モジュール 'tensorflow' には 'placeholder' という属性がありません。
-
Tensorflowシリーズ:tf.contrib.layers.batch_norm
-
Tensorflowは、'_pywrap_tensorflow_internal'という名前のモジュールがないことを解決する。
-
Tensorflowの実行エラー。tensorflow.contrib'という名前のモジュールがありません。
-
tensorflow 学習メモ (IX): tf.shape()とtensor.get_shape()
-
tf.variable, tf.get_variable, tf.variable_scope, tf.name_scope の類似点と相違点を理解する。
-
Tensorflowのエラーです。TypeError: 'NoneType'オブジェクトは呼び出し可能ではない