不能训练CNN(或其他神经网络)来适应(甚至过度适应)Keras+Thean

2024-05-16 15:21:33 发布

您现在位置:Python中文网/ 问答频道 /正文

出于学习的目的,我试图从头开始实现CNN,但结果似乎没有从随机猜测中得到改善。我知道这不是家用硬件的最佳方法,并且遵循当然。快。艾通过转移学习,我已经取得了更好的效果,但为了更深入地理解,我想至少在理论上,看看一个人如何才能做到这一点。在

在CIFAR-10上进行测试没有问题-一个小型CNN在几分钟内从零开始训练,误差小于0.5%。在

然而,当尝试用猫和狗的Kaggle数据集进行测试时,结果的准确率没有从50%上升。该体系结构基本上是一个AlexNet的副本,包括非最先进的选择(大型过滤器、直方图均衡化、Nesterov SGD优化器)。关于更多细节,我把代码放在GitHub的笔记本上:

https://github.com/mspinaci/deep-learning-examples/blob/master/dogs_vs_cats_with_AlexNet.ipynb

(我也尝试了不同的架构,更像VGG,并使用了Adam optimizer,但结果是一样的;我遵循上述结构的原因是为了尽可能地匹配这里描述的Caffe过程: https://github.com/adilmoujahid/deeplearning-cats-dogs-tutorial 根据作者在这里的描述,这似乎足够快地收敛了:http://adilmoujahid.com/posts/2016/06/introduction-deep-learning-python-caffe/)。在

我希望一些拟合会很快发生,可能会因为许多次优选择而变得平坦(例如,小数据集,无数据扩充)。相反,我没有看到任何增长,正如笔记本显示的那样。在

所以我想,也许我只是高估了我的GPU和耐心,而且模型太复杂了,甚至在几个小时内都无法覆盖我的数据(我运行了70个时代,每次大约360批64幅图像)。因此,我试着尽可能地过度拟合,运行以下其他模型:

https://github.com/mspinaci/deep-learning-examples/blob/master/Ridiculously%20overfitting%20models...%20or%20maybe%20not.ipynb

纯线性模型开始显示出一些过度拟合-大约53.5%的训练准确率对52%的验证准确率(我想这是我最好的结果)。这符合我的期望。然而,为了尽可能地过度拟合,第二个模型是一个简单的2层前向神经网络,没有任何正则化,我只训练了2000个批量大小达500的图像。我原以为神经网络会过度拟合,很快就能达到100%的训练精度(毕竟它有77M的2k图片参数!)。相反,什么也没发生,准确率很快就降到了50%。在

任何提示,为什么没有一个“多层”模型似乎能够选择任何功能(无论是“真的”或不适合)将非常感谢!在

关于版本等的注意事项:笔记本电脑运行在Python2.7,Keras2.0.8,Theano0.9.0上。操作系统是windows10,GPU不是很强大,但这应该足以完成基本任务,geforcegtx960m


Tags: 数据https模型githubcom笔记本examplesblob