Python 无法训练CNN(或其他神经网络)在Keras+;西雅娜

Python 无法训练CNN(或其他神经网络)在Keras+;西雅娜,python,neural-network,deep-learning,keras,theano,Python,Neural Network,Deep Learning,Keras,Theano,出于学习目的,我尝试从头开始实现CNN,但随机猜测的结果似乎没有改善。我知道这不是家用硬件的最佳方法,接下来的课程是。fast.ai我通过迁移学习获得了更好的结果,但为了更深入地理解,我想看看,至少在理论上,人们如何才能做到这一点 对CIFAR-10的测试没有任何问题——一个小型CNN在几分钟内从零开始训练,误差小于0.5% 然而,当试图测试猫与狗Kaggle数据集时,结果并没有从50%的准确率膨胀。该体系结构基本上是AlexNet的副本,包括非最先进的选择(大型过滤器、直方图均衡化、Neste

出于学习目的,我尝试从头开始实现CNN,但随机猜测的结果似乎没有改善。我知道这不是家用硬件的最佳方法,接下来的课程是。fast.ai我通过迁移学习获得了更好的结果,但为了更深入地理解,我想看看,至少在理论上,人们如何才能做到这一点

对CIFAR-10的测试没有任何问题——一个小型CNN在几分钟内从零开始训练,误差小于0.5%

然而,当试图测试猫与狗Kaggle数据集时,结果并没有从50%的准确率膨胀。该体系结构基本上是AlexNet的副本,包括非最先进的选择(大型过滤器、直方图均衡化、Nesterov SGD优化器)。有关更多详细信息,我将代码放在GitHub上的笔记本中:

(我还尝试了不同的体系结构,更像VGG,并使用Adam optimizer,但结果是一样的;我遵循上述结构的原因是为了尽可能地匹配此处描述的Caffe过程: 根据作者的描述,这似乎收敛得足够快:)

我期望一些拟合会很快发生,可能会因为做出了许多次优选择(例如,小数据集,没有数据扩充)而变得平坦。相反,正如笔记本所示,我没有看到任何增量

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

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

任何关于为什么“多层”模型似乎都无法选择任何功能(无论是“真实的”还是过度拟合)的提示都将非常感谢

关于版本等的说明:笔记本电脑是在Python 2.7、Keras 2.0.8和Theano 0.9.0上运行的。操作系统是Windows10,GPU不是很强大,但对于基本任务来说应该足够了,GeForce GTX 960M