最近想用Python搞搞神经网络,就用Keras了。
Caffe和Keras相比优缺点:
框架 | 优点 | 缺点 |
---|---|---|
Keras | 使用简单,快速开发,参考资料多 | 运行慢 |
Caffe | 使用较难,参考资料少 | 运行快 |
为了快速上手,选择Keras。
1.Keras安装
安装过程全程参考:Keras深度学习框架配置
感谢博主,写的非常详细。
提醒!
如果你之前单独安装过Python和MinGW,记得先把他们删掉!!!然后再按照博主的博客安装
我就是因为电脑里多个Python和MinGW导致系统环境变量混乱,死活不成功不知道怎么解决。
最后在cmd里发现Python路径和Anaconda2里Python路径不一样,MinGw也是。然后删掉原来的Python和MinGw后,改了Python和MinGW系统环境变量,就可以了。
但是上面那篇博客有些内容经过我实验发现并不对,下面会具体讲。
2.博客内容修改
修改1:博主给的手写数字识别例子mnist里面有一个函数要更改,不然运行不了。直接运行就会如下错误:
Exception: Unexpected keyword argument passed to optimizer: l2
错误截图如下:
具体原因:我认为是因为keras版本更新,相应函数有所变动导致的,博主用的是keras 0.3.3,我用的是最新的keras 1.0.7
更改方法:
将cnn.py中第88行代码
sgd = SGD(l2=0.0, lr=0.05, decay=1e-6, momentum=0.9, nesterov=True)
更改为:
sgd = SGD(lr=0.05, momentum=0.9, decay=1e-6, nesterov=True)
是因为在keras中SGD的构造函数并没有参数l2
(Python刚看了一天,不知道有没有构造函数这种说法)。
SGD的构造函数如下,可以看到下面并没有l2
参数,所以删掉就行了
class SGD(Optimizer):
def __init__(self, lr=0.01, momentum=0., decay=0.,
nesterov=False, **kwargs):
super(SGD, self).__init__(**kwargs)
修改2:博客里下面这一步是没有必要的,安装完Anaconda后自带的theano文件夹没有问题,我没有更改运行mnist例子成功了。
运行成功截图:
其中Epoch是迭代次数,ETA是预计剩余时间。