【发布时间】:2022-11-30 10:52:46
【问题描述】:
我正在使用 resnet50 作为编码器进行图像分割,并在 tensorflow 中使用带有跳过层的解池层制作解码器
对于损失函数,我使用了 dice_coefficient 和 IOU 公式,将两者相加计算总损失。除了总损失外,我还从网络中添加了 REGULARIZATION_LOSSES
total_loss = tf.add_n([dice_coefficient_output+IOU_output]+tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES))
训练开始,在第一个epoch,总损失将在0.4左右
但是,在第 2 个 epoch 中,总损失显示为 nan 它
解码损失值后,tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES) 有每个层的值列表,在大多数层中返回 nan。
对于这个挑战,我尝试使用不同的归一化,比如缩放图像数据 = 0 到 1,-1 到 1,z-score,但是 nan 出现在第二个时期。
我试图降低学习率,改变l2 regularization 中的权重衰减,但nan 从第二个时期开始保持不变。
最后,我减少了网络中的神经元,开始训练,nan在第2个epoch消失了,但在第4个epoch出现了。
任何改进此模型的建议,如何摆脱 regularization_loss 中的 nan
谢谢
【问题讨论】:
标签: python python-3.x tensorflow keras conv-neural-network