我有大约360个图像,分割了%25作为验证数据。我可以用这些图像训练Deeplabv3,而不会有任何问题。稍后,我添加了大约40张带有标签的图像。但该模型现在开始给出验证损失总是nan。有时,它在第一个历元就给出了一些验证损失值,但从第二个历元开始,验证损失总是nan。奇怪的是,我仍然可以用相同的数据训练Unet或任何其他模型,而不会出现任何问题。后来,我丢弃了这40张图片,训练了Deeplabv3,然后再次工作,没有任何问题。我已经检查了这些图像的标签和所有内容,看起来新图像没有问题。你知道是什么导致了这个问题吗?
假设你还没有解决这个问题或继续前进,如果你使用的是Deeplabv3的tf.keras实现,请检查你的DilatedSpatialPyramidPooling层,在该层的卷积块中,要么注释掉BatchNormalization,要么像一样用Flatten和Reshape包围它
x = layers.Flatten()(x)
x = layers.BatchNormalization()(x)
x = layers.Reshape((1,1,-1))(x)
批次范数和空间维度(如(1,1,num_channels((可能会有一些奇怪的行为,但我不完全确定原因。然而,它解决了我的问题。