我已经在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.losseskeras.metrics的更多信息,请参阅文档。

关于python - 测试已保存的卷积自动编码器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59436644/

10-13 09:35