我正在使用resnet的此https://github.com/tensorflow/models/tree/master/official/resnet官方tensorflow实现在我自己的数据集中训练二进制分类器。我对 imagenet_main.py 中的 input_fn 做了一些修改,以进行自己的图像加载和预处理。但是经过多次参数调整后,我无法正确训练模型。我只能找到一组参数,这些参数可使训练精度提高到100%,而验证精度永远保持在50%左右。该实现采用分段学习率。我尝试将初始学习率从 0.1 设置为 1e-5 ,并将体重衰减从 1e-2 设置为 1e-5 ,但未找到验证集的收敛性。
一个可疑的观察结果是,在训练过程中,l2损失缓慢而稳定地下降,而交叉熵却不愿减少,一直保持在0.69附近。
关于我可以进一步尝试的任何想法吗?
关于我的数据集和图像预处理,训练数据集大约有10万张图像。验证集约为10K。我只是将每个图像的尺寸调整为224 * 224,同时保持宽高比,并在每个通道上减去127,然后将它们除以255。
答案 0 :(得分:0)
实际上,@ Hua resnet有很多可训练的参数,并且它在具有1k类的图像网上进行训练。而您的数据集只有两个类。 resnet的密集层具有4k个神经元,因此增加了可训练参数的数量。现在,参数数量与过度拟合的风险直接相关。表示resnet模型不适合您的数据,请对resnet进行一些更改。尝试减少参数数量。这可能会帮助–