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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

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

Q&A

0回答

1926閲覧

val_lossがセーブされていかない

Ammonite

総合スコア10

Python 3.x

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

0グッド

0クリップ

投稿2019/03/30 08:11

CNNによる画像認識でval_lossがおかしい

画像をインプットするとそれが何であるかを判別するCNNを構築しています。
プログラム実行中に、エラーではないのですがval_lossが変な挙動をします。

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

Epoch 1/50
219/219 [==============================] - 5s 23ms/step - loss: 1.2741 - acc: 0.4749 - val_loss: 1.5124 - val_acc: 0.2500

Epoch 00001: val_loss improved from inf to 1.51244, saving model to best.hdf5
Epoch 2/50
219/219 [==============================] - 4s 20ms/step - loss: 1.2694 - acc: 0.4795 - val_loss: 1.4055 - val_acc: 0.2500

Epoch 00002: val_loss improved from 1.51244 to 1.40550, saving model to best.hdf5
Epoch 3/50
219/219 [==============================] - 4s 19ms/step - loss: 1.2418 - acc: 0.4703 - val_loss: 1.4058 - val_acc: 0.2500

Epoch 00003: val_loss did not improve from 1.40550
Epoch 4/50
219/219 [==============================] - 4s 19ms/step - loss: 1.2269 - acc: 0.5160 - val_loss: 1.5808 - val_acc: 0.2500

Epoch 00004: val_loss did not improve from 1.40550

このように、Epoch3から、val_lossが変わっているのにもかかわらず、val_loss did not improve from 1.40550と出てしまいます。これは最後のエポックまで続きました。何が問題でしょうか?

該当のソースコード

Python

1def Learning(tsnum=15, nb_epoch=50, batch_size=1, learn_schedule=0.9): 2 X_TRAIN_list = []; Y_TRAIN_list = []; X_TEST_list = []; Y_TEST_list = [] 3 target = 0 4 for filename in FileNames : 5 data = np.load(filename) # 画像のnumpyデータを読み込み 6 trnum = data.shape[0] - tsnum 7 X_TRAIN_list += [data[i] for i in range(trnum)] # 画像データ 8 Y_TRAIN_list += [target] * trnum # 分類番号 9 X_TEST_list += [data[i] for i in range(trnum, trnum+tsnum)] # 学習しない画像データ 10 Y_TEST_list += [target] * tsnum # 学習しない分類番号 11 target += 1 12 13 X_TRAIN = np.array(X_TRAIN_list + X_TEST_list) # 連結 14 Y_TRAIN = np.array(Y_TRAIN_list + Y_TEST_list) # 連結 15 print(">> 学習サンプル数 : ", X_TRAIN.shape) 16 y_train = np_utils.to_categorical(Y_TRAIN, target) # 自然数をベクトルに変換 17 valrate = tsnum * target * 1.0 / X_TRAIN.shape[0] 18 19 # 学習率の変更 20 class Schedule(object): 21 def __init__(self, init=0.001): # 初期値定義 22 self.init = init 23 def __call__(self, epoch): # 現在値計算 24 lr = self.init 25 for _ in range(1, epoch+1): 26 lr *= learn_schedule 27 return lr 28 29 def get_schedule_func(init): 30 return Schedule(init) 31 32 lrs = LearningRateScheduler(get_schedule_func(0.001)) 33 mcp = ModelCheckpoint(filepath='best.hdf5', monitor='val_loss', verbose=1, save_best_only=True, mode='auto') 34 model = BuildCNN(ipshape=(X_TRAIN.shape[1], X_TRAIN.shape[2], X_TRAIN.shape[3]), num_classes=target) 35 36 print(">> 学習開始") 37 history = model.fit(X_TRAIN, y_train, 38 batch_size=batch_size, 39 verbose=1, 40 epochs=nb_epoch, 41 validation_split=valrate, 42 callbacks=[lrs, mcp]) 43 44 json_string = model.to_json() 45 json_string += '##########' + str(ClassNames) 46 open('model.json', 'w').write(json_string) 47 model.save_weights('last.hdf5') 48

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問