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

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

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

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

2131閲覧

tensorflowのエラーTypeError: Cannot interpret feed_dict key as Tensor: Tensor Tensor("conv2d_1_input:0",

meJ15

総合スコア55

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/02/11 05:54

前提・実現したいこと

python のFlaskでサーバーを立てて、ウェブ上で機械学習により判別するシステムを作っています。

ユーザからのデータをwebでもらい、ウェブでの学習ボタンを押すとそのデータをpythonに投げ、pythonで学習させています。

しかし一度目の学習はうまくできるのですが、そのボタンを2回目以降押すとエラーがでます。
またその問題となっているモジュールを上書き保存して、更新すると一回目だけはうまく学習できます。

何がいけないのでしょうか?

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

TypeError: Cannot interpret feed_dict key as Tensor: Tensor Tensor("conv2d_1_input:0", shape=(?, 6, 10, 1), dtype=float32) is not an element of this graph.

該当のソースコード

python

1 2//サーバたてるコード 3@app.route('/') 4def index(): 5 with open("index5online.html", "rb") as f: 6 return render_template('index5online.html') 7 #オンライン学習用の推定 8 9@app.route('/learning/',methods=['GET','POST']) 10def learning(): 11 label = act5_keras.keras_learning() 12 13 return ('----finish learning by %s--- '%(label) )

python

1 2//act5_keras.py 3def keras_learning(): 4 5 //一部処理 6 7 # CNNモデル構造を定義 --- (*2) 8 model = Sequential() 9 model.add(Conv2D(32, kernel_size=(3, 3), 10 activation='relu', 11 input_shape=in_shape)) 12 model.add(Conv2D(64, (3, 3), activation='relu')) 13 model.add(MaxPooling2D(pool_size=(2, 2))) 14 model.add(Dropout(0.25)) 15 model.add(Flatten()) 16 model.add(Dense(128, activation='relu')) 17 model.add(Dropout(0.5)) 18 model.add(Dense(out_size, activation='softmax')) 19 20 # モデルを構築 --- (*3) 21 model.compile( 22 loss='categorical_crossentropy', 23 optimizer=RMSprop(), 24 metrics=['accuracy']) 25 26 # 学習を実行 --- (*4) 27 hist = model.fit(X_train, y_train, 28 batch_size=128, 29 epochs=30, 30 verbose=1, 31 validation_data=(X_test, y_test)) 32 33 # モデルを評価 --- (*5) 34 score = model.evaluate(X_test, y_test, verbose=1) 35 print('正解率=', score[1], 'loss=', score[0]) 36 """ 37 # 学習の様子をグラフへ描画 --- (*6) 38 # 正解率の推移をプロット 39 plt.plot(hist.history['acc']) 40 plt.plot(hist.history['val_acc']) 41 plt.title('Accuracy') 42 plt.legend(['train', 'test'], loc='upper left') 43 plt.show() 44 45 # ロスの推移をプロット 46 plt.plot(hist.history['loss']) 47 plt.plot(hist.history['val_loss']) 48 plt.title('Loss') 49 plt.legend(['train', 'test'], loc='upper left') 50 plt.show() 51 """ 52 model.save('CNN_model.h5') 53 model.save_weights('CNN_weight.h5') 54 55 return "keras" 56 57 58def keras_predict(arr): 59//予測の関数 60 model = load_model('CNN_model.h5') 61 model.load_weights('CNN_weight.h5') 62///.... 63 64

試したこと

一回目だけは有効なのが良く理解できません、

参考をみましたが、

マルチスレッドで動作する場合に、読み込んだモデルが別のスレッドには共有されないため起きる。ということらしいのですが、
act5_keras.pyの予測の関数でモデルを読み込んでるのがいけないのでしょうか?
予測の関数は、ユーザが予測ボタンを押さないと動かないようになっていますが、、、

なにを変えれば良いのでしょうか?

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問