我正在训练一个模型来从图像中分割机器打印文本。这些图像可能还包含条形码和手写文本。地面真实图像被处理过,0表示机器打印,1表示其他部分。我使用5层CNN与扩张(dilation)输出两个映射。我的损失计算如下:
我有一些只包含手写文本的图像,它们对应的标准答案是空白页,用1表示。
在训练模型时,对于这些图像,我得到了0的损失和100%的训练精度。这正确吗?为什么损失可以为零? 对于其他包含条形码或机器打印的图像,我得到了一些损失,并且它们正在逐渐收敛。
当我测试这个模型时,条形码被正确忽略。但它会输出机器打印和手写文本,而我只需要机器打印。
请问有人能指导我错在哪里吗?
更新1:
之前我使用的学习率是0.01,将其更改为0.0001后,我得到了一些损失,它似乎收敛了,但不是很好。 但是,高学习率如何会给出0的损失?
当我在Caffe中使用相同的模型和学习率0.01时,与Tensorflow相比,它给出了一些损失并且收敛良好。
def loss(logits, labels):
logits = tf.reshape(logits, [-1, 2])
labels = tf.reshape(labels, [-1])
cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=labels)
cross_entropy_mean = tf.reduce_mean(cross_entropy, name='cross_entropy')
我有一些只包含手写文本的图像,它们对应的标准答案是空白页,用1表示。
在训练模型时,对于这些图像,我得到了0的损失和100%的训练精度。这正确吗?为什么损失可以为零? 对于其他包含条形码或机器打印的图像,我得到了一些损失,并且它们正在逐渐收敛。
当我测试这个模型时,条形码被正确忽略。但它会输出机器打印和手写文本,而我只需要机器打印。
请问有人能指导我错在哪里吗?
更新1:
之前我使用的学习率是0.01,将其更改为0.0001后,我得到了一些损失,它似乎收敛了,但不是很好。 但是,高学习率如何会给出0的损失?
当我在Caffe中使用相同的模型和学习率0.01时,与Tensorflow相比,它给出了一些损失并且收敛良好。