Tensorflow 图像彩色化的精度和损耗仍在提高,但输出有更多的伪影
我有以下CNN: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 ___________________________________________
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
这是否过度装配以及如何防止它?正确-这是一个过度装配的示例。您可以看到,这种情况在第10纪元左右开始出现,其中训练集的精度开始高于验证集的精度 这是因为模型开始过多地记忆训练集模式,因此它不能很好地概括看不见的数据(您的验证集) 您的模型中似乎没有任何正则化层,因此我绝对建议添加一些退出层。Dropout通过随机“关闭”节点来工作,因此该模型被迫通过网络学习其他路由,从而有助于防止过度拟合。这很好地解释了这一点 从0.1的落差开始,并查看训练精度和验证精度开始不同的点是否在第10个历元之后开始。例如,如果training acc>validation acc现在从第20纪元开始,那么你知道辍学会产生积极的影响,你可以决定从那里做什么
像往常一样,以小步骤进行更改,以便您可以看到发生了什么。我尝试添加一些退出层,但没有改进。因此,我认为,这将是最大值。我投票结束这个问题,因为它不是关于中定义的编程,而是关于ML理论和/或方法-请参阅机器学习中的介绍和注释。