这就是我分割数据的方式
(X, y), (X_test, y_test) = mnist.load_data()
X_train, X_val, y_train, y_val = train_test_split(X,
y,
test_size=0.1,
random_state=1)
下面的代码绘制了X_train和X_val,我想添加X_test绘制
history = model.fit(
x= X_train,
y= y_train,
epochs = 10,
validation_data = (X_val, y_val),
batch_size = 128
)
from matplotlib import pyplot as plt
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'val'], loc='upper left')
plt.show()
是否还可以在此图上绘制test_loss
以获得同一图上所有三个图的概览?
没有history.history['test_loss']
。
答案 0 :(得分:1)
您尚未计算test_loss。 您首先需要使用X_test预测一些标签,然后根据预测值和y_test计算损失。或者,您可以使用评估直接做到这一点:
test_loss = model.evaluate(X_test, y_test)
您不能将它们一起绘制,因为test_loss是在训练结束时一次计算的单个值,而不是像验证那样的每个时期都计算一次。
尽管如此,您不应在训练中使用X_test和y_test,因为您将对所有可用数据进行训练,因此无法再进行测试。
X_test和y_test仅在测试模型性能的所有步骤结束时使用。
在您训练时,验证数据用于“测试数据”的目的。完成所有训练和优化之后,您可以在训练广告验证的组合数据集上对网络进行再训练,并使用生成的网络来测试其在测试数据集(X_test,y_test)上的效果