Tensorflow 图像彩色化的精度和损耗仍在提高,但输出有更多的伪影

Tensorflow 图像彩色化的精度和损耗仍在提高,但输出有更多的伪影,tensorflow,machine-learning,keras,neural-network,conv-neural-network,Tensorflow,Machine Learning,Keras,Neural Network,Conv Neural Network,我有以下CNN: Layer (type) Output Shape Param # ================================================================= conv2d (Conv2D) (None, 256, 256, 32) 320 ___________________________________________

我有以下CNN:

Layer (type)                 Output Shape              Param #   
=================================================================
conv2d (Conv2D)              (None, 256, 256, 32)      320       
_________________________________________________________________
conv2d_1 (Conv2D)            (None, 128, 128, 32)      9248      
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 128, 128, 64)      18496     
_________________________________________________________________
conv2d_3 (Conv2D)            (None, 64, 64, 64)        36928     
_________________________________________________________________
conv2d_4 (Conv2D)            (None, 64, 64, 128)       73856     
_________________________________________________________________
conv2d_5 (Conv2D)            (None, 32, 32, 128)       147584    
_________________________________________________________________
conv2d_6 (Conv2D)            (None, 32, 32, 256)       295168    
_________________________________________________________________
conv2d_7 (Conv2D)            (None, 16, 16, 256)       590080    
_________________________________________________________________
conv2d_8 (Conv2D)            (None, 16, 16, 512)       1180160   
_________________________________________________________________
conv2d_9 (Conv2D)            (None, 16, 16, 256)       1179904   
_________________________________________________________________
conv2d_transpose (Conv2DTran (None, 32, 32, 256)       590080    
_________________________________________________________________
conv2d_10 (Conv2D)           (None, 32, 32, 128)       295040    
_________________________________________________________________
conv2d_transpose_1 (Conv2DTr (None, 64, 64, 128)       147584    
_________________________________________________________________
conv2d_11 (Conv2D)           (None, 64, 64, 64)        73792     
_________________________________________________________________
conv2d_transpose_2 (Conv2DTr (None, 128, 128, 64)      36928     
_________________________________________________________________
conv2d_12 (Conv2D)           (None, 128, 128, 32)      18464     
_________________________________________________________________
conv2d_transpose_3 (Conv2DTr (None, 256, 256, 32)      9248      
_________________________________________________________________
conv2d_13 (Conv2D)           (None, 256, 256, 16)      4624      
_________________________________________________________________
conv2d_14 (Conv2D)           (None, 256, 256, 2)       290       
=================================================================
Total params: 4,707,794
Trainable params: 4,707,794
Non-trainable params: 0
我用这个参数训练它:

  • 数据集大小:150 000
  • 优化器:亚当
  • 批量:128
  • 损失函数:MSE
我有这些图表:

我们可以看到,准确度和损耗一直在提高。但问题在于产出。当我用测试数据集评估每个历元模型时,最佳历元是15

在这里,我们可以看到第15纪元和第60纪元之间的比较


这是否过度装配以及如何防止它?

正确-这是一个过度装配的示例。您可以看到,这种情况在第10纪元左右开始出现,其中训练集的精度开始高于验证集的精度

这是因为模型开始过多地记忆训练集模式,因此它不能很好地概括看不见的数据(您的验证集)

您的模型中似乎没有任何正则化层,因此我绝对建议添加一些退出层。Dropout通过随机“关闭”节点来工作,因此该模型被迫通过网络学习其他路由,从而有助于防止过度拟合。这很好地解释了这一点

从0.1的落差开始,并查看训练精度和验证精度开始不同的点是否在第10个历元之后开始。例如,如果training acc>validation acc现在从第20纪元开始,那么你知道辍学会产生积极的影响,你可以决定从那里做什么


像往常一样,以小步骤进行更改,以便您可以看到发生了什么。

我尝试添加一些退出层,但没有改进。因此,我认为,这将是最大值。我投票结束这个问题,因为它不是关于中定义的编程,而是关于ML理论和/或方法-请参阅机器学习中的介绍和注释。