画像認識プログラミングレシピという本で学習中です。
以下のコードを参考にkerasで学習済みモデルを作りました。
https://github.com/Kokensha/book-ml/blob/master/Colaboratory/05_01(TensorFlow_Keras_MNIST).ipynb
※saveするまでにエラーが出る部分があったので
def plot_loss_accuracy_graphの[acc]の部分を[accuracy]にしたり
教師ラベルデータの変換のkeras.utils.to_categoricalをnp_utils.to_categoricalに変更したりしました。
そこで1つほど質問があります。
上記のリンクでも確認できますが、公開されているサイトでは10EPOCHほどで正解率が99%にもなりますが、実際に行うと10EPOCHで81%程度で400EPOCHくらいまで上げるとようやく97%まで上がります。同じコードなのになぜこれほど異なるのかが気になります。
一つ引っかかることは学習中の以下の469と60000という部分が違うということです。
python
1Epoch 374/400 2469/469 [==============================] - 4s 10ms/step - loss: 0.1637 - accuracy: 0.9512 - val_loss: 0.0916 - val_accuracy: 0.9721
python
1Epoch 10/10 260000/60000 [==============================] - 5s 76us/step - loss: 0.0303 - acc: 0.9910 - val_loss: 0.0286 - val_acc: 0.9903 3
わかる方いましたらよろしくお願いします。
上記のリンクのコードと変更した箇所
python
1#accの箇所をaccuracyに変更 2def plot_loss_accuracy_graph(fit_record): 3 # 青い線で誤差の履歴をプロットします、検証時誤差は黒い線で 4 plt.plot(fit_record.history['loss'], "-D", color="blue", label="train_loss", linewidth=2) 5 plt.plot(fit_record.history['val_loss'], "-D", color="black", label="val_loss", linewidth=2) 6 plt.title('LOSS') 7 plt.xlabel('Epochs') 8 plt.ylabel('Loss') 9 plt.legend(loc='upper right') 10 plt.show() 11 12 # 緑の線で精度の履歴をプロットします、検証時制度は黒い線で 13 plt.plot(fit_record.history['accuracy'],"-o", color="green", label="train_accuracy", linewidth=2) 14 plt.plot(fit_record.history['val_accuracy'],"-o",color="black", label="val_accuracy", linewidth=2) 15 plt.title('ACCURACY') 16 plt.xlabel('Epochs') 17 plt.ylabel('Accuracy') 18 plt.legend(loc="lower right") 19 plt.show()
python
1#keras.utils.to_categoricalの箇所をnp_utils.to_categoricalに変更 2from keras.utils import np_utils 3 4# 学習用教師ラベルデータをOne-hotベクトルに変換します 5print('Keras変換前学習用教師ラベルデータ train_teacher_labels shape:', train_teacher_labels.shape) 6train_teacher_labels= np_utils.to_categorical(train_teacher_labels, NUM_CLASSES) 7print('Keras変換後学習用教師ラベルデータ train_teacher_labels shape:',train_teacher_labels.shape) 8 9# 検証用教師ラベルデータをOne-hotベクトルに変換します 10print('Keras変換前検証用教師ラベルデータ test_teacher_labels shape:', test_teacher_labels.shape) 11print(test_teacher_labels) 12test_teacher_labels = np_utils.to_categorical(test_teacher_labels, NUM_CLASSES) 13print('Keras変換後検証用教師ラベルデータ test_teacher_labels shape:',test_teacher_labels.shape) 14print(test_teacher_labels)
googlecolabの環境
keras2.5.0
tensorflow2.5.0
numpy1.19.5
macOSXを利用
あなたの回答
tips
プレビュー