[Keras] 绘制训练过程中Acc和Loss曲线

以Fashion MNIST数据集为例。

# coding = utf-8
from tensorflow import keras
import matplotlib.pyplot as plt

# Prepare data X_train: ndarray,(60000, 28, 28) y_train: ndarray, (60000,)
(X_train, y_train), (X_valid, y_valid) = keras.datasets.fashion_mnist.load_data()
X_train = X_train / 255.0
X_valid = X_valid / 255.0

# Build model
model = keras.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),  # input layer
    keras.layers.Dense(128, activation='relu'),  # hidden layer
    keras.layers.Dense(10, activation='softmax')  # output layer
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# Train model
h = model.fit(X_train, y_train, epochs=100, batch_size=32, validation_split=0.2)

# Plot accuracy and loss curve
history = h.history
print(history.keys())
epochs = range(len(history['loss']))

plt.figure(figsize=(20, 5))
ax = plt.subplot(1, 2, 1)
ax.set_title('Train and Valid Accuracy')
plt.plot(epochs, history['accuracy'], 'b', label='Train accuracy')
plt.plot(epochs, history['val_accuracy'], 'r', label='Valid accuracy')
plt.legend()

ax = plt.subplot(1, 2, 2)
ax.set_title('Train and Valid Loss')
plt.plot(epochs, history['loss'], 'b', label='Train loss')
plt.plot(epochs, history['val_loss'], 'r', label='Valid loss')
plt.legend()

# plt.savefig(f'acc_and_loss.png')

plt.show()

Output:

...
Epoch 98/100
1500/1500 [==============================] - 2s 1ms/step - loss: 0.0504 - accuracy: 0.9818 - val_loss: 0.7474 - val_accuracy: 0.8877
Epoch 99/100
1500/1500 [==============================] - 2s 1ms/step - loss: 0.0455 - accuracy: 0.9831 - val_loss: 0.7986 - val_accuracy: 0.8813
Epoch 100/100
1500/1500 [==============================] - 2s 1ms/step - loss: 0.0450 - accuracy: 0.9835 - val_loss: 0.7605 - val_accuracy: 0.8895

dict_keys(['loss', 'accuracy', 'val_loss', 'val_accuracy'])

在这里插入图片描述
model.fit()返回一个TensorFlow的History对象,其中包含一个history的字典,字典里的键根据设定的metrics=['accuracy']有关。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

手撕机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值