我正在使用Pytorch,我在MNIST数据集上实现了一个CNN,它在训练和测试集上都具有99+%准确性。
我决定切换到时尚MNIST,以了解我的网络架构是如何执行的。我在训练集上获得了95%的准确率,在测试集上获得了91%的准确率。
然后,我开始尝试通过调整模型来提高性能。
简而言之,我的模型看起来像这样:
Conv -> ReLU -> Batch norm -> Max pool ->
Conv -> ReLU -> Batch norm -> Max pool ->
Conv -> ReLU -> Batch norm -> Max pool ->
Conv -> ReLU -> Batch norm -> Max pool ->
Linear -> ReLu -> Linear -> Output
Optimizer: Stochastic Gradient Descent
Transformations: ToTensor() only
我的测试包括删除最后一个Conv层,在最后一个Conv层中添加平均池化而不是最大池化,检查训练损失曲线,以便静态或动态地调整学习率并改变批量大小。
然而,使用上面的组合,我的模型将会过拟合(例如,97%的训练,89%的测试),否则它不会有最好的性能(例如91%的训练,89%的测试)。
我是不是遗漏了什么?我做错了什么吗?有没有其他我没想到需要调整的调优参数?
谢谢
发布于 2019-03-20 18:55:44
你是否在你的神经网络上实现了Dropout。丢弃有助于将神经元的权重随机设置为零,因此特定时间的神经元不会相加为误差,.And避免了过度拟合。
发布于 2019-03-21 17:59:47
时尚MNIST是一个比MNIST更难的问题。因此,您的架构表现不佳也就不足为奇了。
如果您希望获得更高的精度,您可能需要尝试this paper中描述的方法。
https://stackoverflow.com/questions/55268035
复制相似问题