为什么我在CIFAR10数据集上训练的resnet110仅获得77%的测试权限

时间:2019-11-22 02:25:12

标签: deep-learning pytorch resnet

我在CIFAR10数据集上训练了Resnet110,获得了100%的acc训练,但在测试数据集上却只有77.85%。可能是什么问题? 否则,我将使用Pytorch框架。 非常感谢你!

    ------------------------------------------------------------------------
Train Epoch: 200 [0/50000 (0%)] Loss: 0.000811, Accuracy: 100.00
Train Epoch: 200 [12800/50000 (26%)]    Loss: 0.000335, Accuracy: 100.00
Train Epoch: 200 [25600/50000 (51%)]    Loss: 0.000757, Accuracy: 100.00
Train Epoch: 200 [38400/50000 (77%)]    Loss: 0.000334, Accuracy: 100.00
Epoch time:45.98s
Accuracy of plane : 81 %
Accuracy of   car : 88 %
Accuracy of  bird : 65 %
Accuracy of   cat : 60 %
Accuracy of  deer : 73 %
Accuracy of   dog : 69 %    
Accuracy of  frog : 81 %
Accuracy of horse : 82 %
Accuracy of  ship : 86 %
Accuracy of truck : 86 %

Test set: Average loss: 1.3605, Accuracy: 77.58%

2 个答案:

答案 0 :(得分:2)

ResNet-101对于CIFAR10绝对太大了,请使用较小的版本,torchvision中的ResNet-18应该没问题。

此外,您可以使用超级收敛(例如,将学习率设置为53来真正快速地训练那些人,请参见this article或其他相关知识。我认为您可以在torch.optim.AdamW的18个左右的时间内完成此操作。此外,如此之高的学习率将起到正则化作用,因为它只会收敛到真正平坦的最小区域。

为了不过度拟合,请使用功能强大的图像增强,旋转,翻转,CutOut或MixUp。您可以在albumentations第三方库中找到它们。

答案 1 :(得分:0)

这太过分了,这很明显。摆脱过度拟合的最佳方法是训练更多数据。

为此,您可以使用此repo进行数据扩充。

您为cifar10使用特殊的resnet体系结构,可以使您获得高达93%的准确性。使用数据增强可以达到这种精度h / b。

其他用于规范化神经网络(以减少过度拟合)的技术是:

  • 退出
  • 提前停止

这是我可以更改resnet18的方法,以添加辍学内容:

from torchvision.models import resnet18
model = resnet18(pretrained=True)
model.fc = nn.Sequential(
    nn.Dropout(0.5),
    nn.Linear(512, 10)
)
model.to(dev)

请注意,几乎从未使用过在befor卷积层上添加滤除。

还要检查this URL。 如您所见,没有人对cifar10的准确性达到100.00。 :)