Kerasでhistoryをグラフに出力したいのですが、学習の数値だけでグラフが出ません。
環境は macOS version:10.14.5、python3.7でjupyter labを使っています。
Python
1import numpy as np 2import matplotlib.pyplot as plt 3from keras.datasets import mnist 4from keras.layers import Activation, Dense, Dropout 5from keras.models import Sequential, load_model 6from keras.utils.np_utils import to_categorical 7from keras import optimizers 8from keras import models 9from keras import layers 10 11%matplotlib inline 12 13(X_train, y_train), (X_test, y_test) = mnist.load_data() 14 15X_train = X_train.reshape(X_train.shape[0], 784)[:6000] 16X_test = X_test.reshape(X_test.shape[0], 784)[:1000] 17y_train = to_categorical(y_train)[:6000] 18y_test = to_categorical(y_test)[:1000] 19 20model = Sequential() 21model.add(Dense(256, input_dim=784)) 22model.add(Activation("sigmoid")) 23model.add(Dense(128)) 24model.add(Activation("sigmoid")) 25 26model.add(Dropout(rate=0.5)) 27 28model.add(Dense(10)) 29model.add(Activation("softmax")) 30 31sgd = optimizers.SGD(lr=0.1) 32 33model.compile(optimizer=sgd, loss="categorical_crossentropy", metrics=["accuracy"]) 34 35history = model.fit( 36 X_train, 37 y_train, 38 batch_size=32, 39 epochs=5, 40 verbose=1, 41 validation_data=(X_test, y_test), 42) 43 44acc = history.history["acc"] 45val_acc = history.history["val_acc"] 46loss = history.history["loss"] 47val_loss = history.history["val_loss"] 48 49epochs = range(0, len(acc)+1) 50 51plt.plot(epochs, acc, label="acc", ls="-", marker="o") 52plt.plot(epochs, val_acc, label="val_acc", ls="-", marker="x") 53plt.ylabel("accuracy") 54plt.xlabel("epoch") 55plt.legend(loc="best") 56plt.show() 57
OUT
WARNING:tensorflow:From /Users/tk/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
WARNING:tensorflow:From /Users/tk/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py:3445: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.
Instructions for updating:
Please use rate
instead of keep_prob
. Rate should be set to rate = 1 - keep_prob
.
WARNING:tensorflow:From /Users/tk/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.cast instead.
Train on 6000 samples, validate on 1000 samples
Epoch 1/5
6000/6000 [==============================] - 2s 406us/step - loss: 1.7341 - acc: 0.4120 - val_loss: 1.1612 - val_acc: 0.6760
Epoch 2/5
6000/6000 [==============================] - 2s 261us/step - loss: 1.0437 - acc: 0.6675 - val_loss: 0.8453 - val_acc: 0.7640
Epoch 3/5
6000/6000 [==============================] - 1s 238us/step - loss: 0.8622 - acc: 0.7213 - val_loss: 0.7237 - val_acc: 0.7970
Epoch 4/5
6000/6000 [==============================] - 2s 282us/step - loss: 0.7922 - acc: 0.7522 - val_loss: 0.6881 - val_acc: 0.8060
Epoch 5/5
6000/6000 [==============================] - 2s 256us/step - loss: 0.7314 - acc: 0.7722 - val_loss: 0.6314 - val_acc: 0.8150
「Pythonで学ぶ!深層学習の教科書」という本で勉強しているのですが、この本のソースコード通りに書いても同じ結果になってしまいます。
本では、plt.plotの部分が
Python
1plt.plot(history.history["acc"], label="acc", ls="-", marker="o")
となっています。
何かわかることがございましたら、ご教示いただければ幸いです。
追記
plt.plot([1, 5], [1, 10])
を書いてみたのですが、グラフが表示されませんでした。
pythonやkerasのバージョンが原因で表示されないことはあるのでしょうか?
Python
1import numpy as np 2import matplotlib.pyplot as plt 3from keras.datasets import mnist 4from keras.layers import Activation, Dense, Dropout 5from keras.models import Sequential, load_model 6from keras.utils.np_utils import to_categorical 7from keras import optimizers 8from keras import models 9from keras import layers 10import tensorflow 11import tensorboard 12from livelossplot import PlotLossesKeras 13 14%matplotlib inline 15 16(X_train, y_train), (X_test, y_test) = mnist.load_data() 17 18X_train = X_train.reshape(X_train.shape[0], 784)[:6000] 19X_test = X_test.reshape(X_test.shape[0], 784)[:1000] 20y_train = to_categorical(y_train)[:6000] 21y_test = to_categorical(y_test)[:1000] 22 23model = Sequential() 24model.add(Dense(256, input_dim=784)) 25model.add(Activation("sigmoid")) 26model.add(Dense(128)) 27model.add(Activation("sigmoid")) 28 29model.add(Dropout(rate=0.5)) 30 31model.add(Dense(10)) 32model.add(Activation("softmax")) 33 34sgd = optimizers.SGD(lr=0.1) 35 36model.compile(optimizer=sgd, loss="categorical_crossentropy", metrics=["accuracy"]) 37 38# callbacks = [PlotLossesKeras()] 39 40history = model.fit( 41 X_train, 42 y_train, 43 batch_size=32, 44 epochs=5, 45 verbose=1, 46 validation_data=(X_test, y_test), 47# callbacks=[PlotLossesKeras()] 48) 49 50acc = history.history["acc"] 51val_acc = history.history["val_acc"] 52loss = history.history["loss"] 53val_loss = history.history["val_loss"] 54 55epochs = range(1, len(acc) + 1) 56 57 58print("-" * 20) 59print(epochs) 60print(history) 61print("-" * 20) 62 63 64plt.plot([1, 5], [1, 10]) # 追記 65plt.plot(epochs, acc, label="acc", ls="-", marker="o") 66plt.plot(epochs, val_acc, label="val_acc", ls="-", marker="x") 67plt.ylabel("accuracy") 68plt.xlabel("epoch") 69plt.legend(loc="best")
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/17 15:17
2019/07/17 23:26
2019/07/17 23:32
2019/07/17 23:38
2019/07/17 23:47
2019/07/17 23:54
2019/07/17 23:56
2019/07/18 00:02
2019/07/18 00:08 編集
2019/07/18 00:11
2019/07/18 00:13
2019/07/18 00:16
2019/07/18 00:18
2019/07/18 00:27
2019/07/18 01:56
2019/07/18 02:16
2019/07/18 16:12