我从
torchvision.models
训练了两种不同类型的ResNet模型,即具有DEFAULT
权重的ResNet50和具有DEFAULT
权重的ResNet101
但是训练结果真的很奇怪,ResNet50模型的训练精度和测试精度分别是89和85,而ResNet101是34、28!
出了什么问题?
我冻结了整个模型,只训练了 FC 层,该层被修改为具有 4 个输出(等于类的长度)
我都使用了 5 个 epoch。
为什么ResNet101比ResNet50差?
这样不是更好吗?因为有更多层(深度)
这样不是更好吗?因为有更多层(深度)
更多层意味着模型更复杂并且容量更大,但这并不意味着它会表现更好。更复杂的模型可能难以收敛,这意味着与更简单的模型相比,它获得的训练和验证分数较低。
如果它收敛得很好,它仍然可能走得太远并且过度拟合,这意味着与更简单的模型相比,它在训练集上得分很高,但在验证集上得分较差。如果您的数据集已经相对较小且缺乏多样性,这种情况将会加剧。
不要使用相同的方案训练两个模型,而是对较大的模型尝试较低的学习率和/或更少的时期。这将减少过度拟合的机会。