質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

5137閲覧

【tensorflow】同ファイル内で複数の学習済みモデルを実行する方法

ttmm

総合スコア15

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/01/11 00:59

###前提・実現したいこと
tensorflowを用いて学習した複数のモデルを、同じpythonのファイル内で実行させたいのですが
最初に回したモデルはうまく回っているのに、2回目がエラーで落ちてしまいます。
実行するモデルの順番を変えても最初のモデルはうまく回ってます。
どなたか改善点を教えていただけると幸いです。

下記のソースコードを関数で呼び出しています。

###該当のソースコード

python3

1NUM_CLASSES = 3 #指定のモデルによって変更する 2IMAGE_SIZE = 28 #指定のモデルによって変更する 3IMAGE_PIXELS = IMAGE_SIZE*IMAGE_SIZE*3 #2352 4 5images_placeholder = tf.placeholder(tf.float32, shape=(None, IMAGE_PIXELS)) 6labels_placeholder = tf.placeholder(tf.float32, shape=(None, NUM_CLASSES)) 7keep_prob = tf.placeholder(tf.float32) 8 9#logits = inference(images_placeholder, keep_prob) 10 11# 画像を入れる仮のTensor 12images_placeholder = tf.placeholder(tf.float32, shape=[None, IMAGE_PIXELS]) 13# ラベルを入れる仮のTensor 14labels_placeholder = tf.placeholder(tf.float32, shape=[None, NUM_CLASSES]) 15# dropout率を入れる仮のTensor 16keep_prob = tf.placeholder(tf.float32) 17 18# inference()を呼び出してモデルを作る 19#logits = inference(images_placeholder, keep_prob) 20 21# 入力を28x28x3に変形 22x_image = tf.reshape(images_placeholder, [-1, 28, 28, 3]) 23#x_image = tf.reshape(images_placeholder, [-1, 56, 56,3]) 24# 畳み込み層1の作成 25W_conv1 = weight_variable([5, 5, 3, 32],'W_conv1') 26b_conv1 = bias_variable([32],'b_conv1') 27h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1) 28 29# プーリング層1の作成 30h_pool1 = max_pool_2x2(h_conv1) 31 32# 畳み込み層2の作成 33W_conv2 = weight_variable([5, 5, 32, 64],'W_conv2') 34b_conv2 = bias_variable([64],'b_conv2') 35h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2) 36 37# プーリング層2の作成 38h_pool2 = max_pool_2x2(h_conv2) 39linear, linear_length = linearize(h_pool2) 40# 全結合層1の作成 41W_fc1 = weight_variable([linear_length, 1024],'W_fc1') 42b_fc1 = bias_variable([1024],'b_fc1') 43h_fc1 = tf.nn.relu(tf.matmul(linear, W_fc1) + b_fc1) 44h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob) 45 46# 全結合層2の作成 47W_fc2 = weight_variable([1024, NUM_CLASSES],'W_fc2') 48b_fc2 = bias_variable([NUM_CLASSES],'b_fc2') 49 50# ソフトマックス関数による正規化 51logits=tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2) 52 53#モデル読み込み 54sess = tf.InteractiveSession() 55saver = tf.train.Saver() 56sess.run(tf.global_variables_initializer()) 57saver.restore(sess, "指定のモデル")

###発生している問題・エラーメッセージ

2018-01-11 09:43:12.600661: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\framework\op_kernel.cc:1192] Not found: Key W_conv1_1 not fou nd in checkpoint 2018-01-11 09:43:12.600718: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\framework\op_kernel.cc:1192] Not found: Key b_fc2_1 not found in checkpoint 2018-01-11 09:43:12.608308: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\framework\op_kernel.cc:1192] Not found: Key W_conv2_1 not fou nd in checkpoint 2018-01-11 09:43:12.609900: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\framework\op_kernel.cc:1192] Not found: Key W_fc1_1 not found in checkpoint 2018-01-11 09:43:12.615864: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\framework\op_kernel.cc:1192] Not found: Key b_fc1_1 not found in checkpoint 2018-01-11 09:43:12.615895: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\framework\op_kernel.cc:1192] Not found: Key W_fc2_1 not found in checkpoint 2018-01-11 09:43:12.637479: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\framework\op_kernel.cc:1192] Not found: Key b_conv1_1 not fou nd in checkpoint 2018-01-11 09:43:12.637704: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\framework\op_kernel.cc:1192] Not found: Key b_conv2_1 not fou nd in checkpoint

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

解決できました。
各モデルを使用した後に下記のコードが必要みたいでした。
tf.reset_default_graph()

前に構築したモデルが残っていたために悪さをしていたみたいです。

投稿2018/01/12 04:41

ttmm

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

https://qiita.com/TomokIshii/items/ffe999b3e1a506c396c8
tensorflow側の変数名割り当てのせいです。

ぞれぞれの変数に足がついています。
それが書き出し時と読み取り時で異なるのが問題です。

以下のリンクが参考になるはずです。
https://qiita.com/yukiB/items/a7a92af4b27e0c4e6eb2

投稿2018/01/11 01:52

mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttmm

2018/01/11 07:28

複数tensorを作る場合は変数の名前を同じにしてはいけないということでしょうか? 変数名を変えてやってみたのですが、2つ目のものに"_test"を付けてモデルを作り直し実行したのですが下記のようなエラーが出てきました。 2018-01-11 16:22:33.659054: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\framework\op_kernel.cc:1192] Not found: Key W_conv1 not found in checkpoint 2018-01-11 16:22:33.659264: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\framework\op_kernel.cc:1192] Not found: Key W_conv2 not found in checkpoint 2018-01-11 16:22:33.669884: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\framework\op_kernel.cc:1192] Not found: Key W_fc1 not found i n checkpoint 2018-01-11 16:22:33.669961: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\framework\op_kernel.cc:1192] Not found: Key b_fc2 not found i n checkpoint 2018-01-11 16:22:33.678100: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\framework\op_kernel.cc:1192] Not found: Key W_fc2 not found i n checkpoint 2018-01-11 16:22:33.681568: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\framework\op_kernel.cc:1192] Not found: Key b_conv1 not found in checkpoint 2018-01-11 16:22:33.697707: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\framework\op_kernel.cc:1192] Not found: Key b_conv2 not found in checkpoint 2018-01-11 16:22:33.698242: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\framework\op_kernel.cc:1192] Not found: Key b_fc1 not found i n checkpoint
ttmm

2018/01/11 07:31

2つ目のモデルではW_conv1などをW_conv1_testにしているので 1つ目のモデルも実行してしまっているということでしょうか?
mkgrei

2018/01/11 08:13

checkpointを作るときの変数名がW_conv1ではなかったというエラーです。 保存時と読み取り時に変数名が同じである必要があります。 checkpointを作ったときのモデルで使った名前にしてください。
ttmm

2018/01/12 04:07 編集

説明が下手ですみません。 例えばモデルAとモデルBを実行したい場合、 モデルAを作るときの変数名をW_conv1_Aにしました。 モデルBを作るときの変数名はW_conv1_Bです。 そのモデルA、Bを、A→B順で同じファイル内で動かします。 するとAは動くのですが、Bが動きません。 その時のエラーは 2018-01-11 16:22:33.659054: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\framework\op_kernel.cc:1192] Not found: Key W_conv1_A not found in checkpoint のようになります。 モデルBを実行する際に # 畳み込み層1の作成 W_conv1 = weight_variable([5, 5, 3, 32],'W_conv1_B') def weight_variable(shape,pname):  initial = tf.truncated_normal(shape, stddev=0.1)  return tf.Variable(initial,name= pname) のようにしているので保存時と読み取り時の変数は同じにしているつもりです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問