[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']有关。

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
UNet模型通常用于图像分割任务,这里介绍一下如何对UNet模型的训练结果进行可视化。 首先,我们可以使用Keras内置的History类记录模型的训练过程,包括每个epoch的训练损失、验证损失和准确率等。我们可以通过以下代码来获取这些信息: ```python history = model.fit(x_train, y_train, validation_data=(x_val, y_val), epochs=50, batch_size=16) train_loss = history.history['loss'] val_loss = history.history['val_loss'] train_acc = history.history['accuracy'] val_acc = history.history['val_accuracy'] ``` 其,`train_loss`为训练损失,`val_loss`为验证集损失,`train_acc`为训练集准确率,`val_acc`为验证集准确率。我们可以使用Matplotlib库将这些信息可视化成图表。 首先是损失曲线绘制: ```python import matplotlib.pyplot as plt epochs = range(len(train_loss)) plt.plot(epochs, train_loss, 'b', label='Training loss') plt.plot(epochs, val_loss, 'r', label='Validation loss') plt.title('Training and validation loss') plt.legend() plt.show() ``` 这段代码将训练集和验证集的损失曲线绘制在同一张图,可以直观地观察模型的训练效果。 接下来是准确率曲线绘制: ```python plt.plot(epochs, train_acc, 'b', label='Training accuracy') plt.plot(epochs, val_acc, 'r', label='Validation accuracy') plt.title('Training and validation accuracy') plt.legend() plt.show() ``` 这段代码将训练集和验证集的准确率曲线绘制在同一张图,同样可以直观地观察模型的训练效果。 需要注意的是,这些可视化结果只能作为参考,具体的模型表现还需要结合实际应用场景进行评估。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

手撕机

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

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

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

打赏作者

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

抵扣说明:

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

余额充值