我已经在Keras中训练并保存了卷积自动编码器。在将模型保存为.h5格式之前,其训练损失为0.2394,验证损失为0.2586。在测试保存的模型时,我得到的损失是验证损失0.6707的两倍以上。实际上,我正在使用来自训练数据的样本对其进行测试,以查看我是否会像在训练期间一样遭受损失甚至变得更近。
这是我计算损失的方法,其中“总计”是我通过以测试模型的图像总数
score = np.sqrt(metrics.mean_squared_error(predicteds,images))
print ('Loss:',score/total)
我在计算测试损失时是否犯了错误?
这是模型编译
autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')
并训练冗长
时代18/20 167/167 [=============================]-
462s 3s / step-损耗:0.2392-val_loss:0.2585
时代19/20 167/167 [=============================]-
461s 3s / step-损耗:0.2399-val_loss:0.2609
时代20/20 167/167 [=============================]-
475s 3s / step-损失:0.2394-val_loss:0.2586
最佳答案
我认为您在混淆指标和损失函数。
根据您的model.compile()
,您正在使用binary_crossentropy
损失函数。这意味着,详细内容中提到的损失与二进制交叉熵有关(loss
-训练损失和val_loss
-验证损失)。
您正在使用RMSE为模型评分,然后将RMSE与二进制交叉熵损失进行比较。
要使用MSE进行训练或使用其他可比较的指标,您需要编译带有MSE损失的模型或将MSE用作指标。有关keras.losses
和keras.metrics
的更多信息,请参阅文档。
关于python - 测试已保存的卷积自动编码器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59436644/