花了大半天时间终于完成了Anaconda下的Keras深度学习框架搭建。
一、Anaconda 安装
首先为什么采用Anaconda,Anaconda解决了官方Python的两大痛点:
(1)提供了包管理功能,附带许多Python科学包及其依赖项,使得Windows平台安装第三方包经常失败的场景得以解决;
(2)提供环境管理功能,conda可以帮助你为不同的项目建立不同的运行环境,解决了不同项目对Python及第三方包版本不同需求的问题,管理环境参考如下url:https://blog.csdn.net/program_developer/article/details/79677557
下载:自行百度官网&&下载对应系统版本,我这里是Anaconda2+winX86+64bits;
安装:基本都是下一步,为了避免不必要的麻烦,最好默认安装路径,路径中不能出现中文,否则安装之后无法使用,会有编码错误报告,期间在高级安装选项中要勾选Add Anaconda to my path environment variable安装环境变量。
二、Theano 安装
由于访问的是国外的网络,所以下载Anaconda和安装包时会特别慢。我们需要更换到国内镜像源地址,这里我更换到国内的清华大学地址。(永久添加镜像)Windows命令:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
如果你安装包时用的是pip,感觉也很慢。同样的,我们把pip的镜像源地址改成国内清华的地址,豆瓣源速度比较快。(临时修改的方法)Windows命令:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
Keras的运行依赖于后端,一般有Tensorflow、Theano和CNTK三种。由于windows版本下的tensorflow暂时不支持python2.7,所以这里采用Theano作为后端进行安装。
1、首先安装完anaconda后打开anaconda promp命令行promp;
2、conda install mingw libpython
3、输入conda install theano, 会得到在Theano安装之前要求安装的包(这里因为是框架都已经都安装好了的结果)
4、Python环境验证Theano是否安装成功,如下所示,输入import theano,若下一行出现<<<则证明安装完成。
期间安装出现过一段报错信息,后来在stackoverflow上找到了相关解决方案,具体如下所示:
参考地址:https://stackoverflow.com/questions/49048734/runtimeerror-to-use-mkl-2018-with-theano-you-must-set-mkl-threading-layer-gnu
三、Keras安装
1、conda install keras/pip install keras;
2、python环境下验证是否安装成功,输入import keras,出现如下报错:
C:\Users\Administrator>python
Python 2.7.12 |Anaconda 4.2.0 (64-bit)| (default, Jun 29 2016, 11:07:13) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
>>> import keras
Using TensorFlow backend.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Anaconda2\lib\site-packages\keras\__init__.py", line 2, in <module>
from . import backend
File "C:\Anaconda2\lib\site-packages\keras\backend\__init__.py", line 68, in <module>
from .tensorflow_backend import *
File "C:\Anaconda2\lib\site-packages\keras\backend\tensorflow_backend.py", line 1, in <module>
import tensorflow as tf
ImportError: No module named tensorflow
造成此原因是由于keras的backend后端同时支持tensorflow和theano。并且默认是tensorflow,因此在win本上需要更改backend为theano才能运行。这是官网的配置文档:http://keras-cn.readthedocs.io/en/latest/backend/,具体操作有如下两种方法:
1)将C:\Anaconda2\Lib\site-packages\keras\backend\__init__.py的line 27修改
# Default backend: TensorFlow.
#_BACKEND = 'tensorflow'
_BACKEND = 'theano'
2)在C:\Users\Administrator\.keras目录下修改文件keras.json
{
"epsilon": 1e-07,
"floatx": "float32",
"image_data_format": "channels_last",
"backend": "tensorflow" //将tensorflow改成theano
}
3、继续验证,出现如下错误:ImportError: cannot import name np_utils,解决方法如下所示:
pip install --upgrade --user keras
4、Python环境继续验证,如下所示,若出现如下则证明安装完成。
四、实例验证
Anaconda打开jupyter,复制keras官网下的实例,http://keras-cn.readthedocs.io/en/latest/getting_started/sequential_model/
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout
# Generate dummy data
x_train = np.random.random((1000, 20))
y_train = np.random.randint(2, size=(1000, 1))
x_test = np.random.random((100, 20))
y_test = np.random.randint(2, size=(100, 1))
model = Sequential()
model.add(Dense(64, input_dim=20, activation=‘relu‘))
model.add(Dropout(0.5))
model.add(Dense(64, activation=‘relu‘))
model.add(Dropout(0.5))
model.add(Dense(1, activation=‘sigmoid‘))
model.compile(loss=‘binary_crossentropy‘,
optimizer=‘rmsprop‘,
metrics=[‘accuracy‘])
model.fit(x_train, y_train,
epochs=20,
batch_size=128)
score = model.evaluate(x_test, y_test, batch_size=128)
运行结果如下:
Epoch 1/20
1000/1000 [==============================] - 1s 882us/step - loss: 0.7117 - acc: 0.5040
Epoch 2/20
1000/1000 [==============================] - 0s 39us/step - loss: 0.7049 - acc: 0.5020
Epoch 3/20
1000/1000 [==============================] - 0s 43us/step - loss: 0.7016 - acc: 0.5000
Epoch 4/20
1000/1000 [==============================] - 0s 39us/step - loss: 0.7031 - acc: 0.5260
Epoch 5/20
1000/1000 [==============================] - ETA: 0s - loss: 0.7046 - acc: 0.515 - 0s 41us/step - loss: 0.7024 - acc: 0.4930
Epoch 6/20
1000/1000 [==============================] - 0s 52us/step - loss: 0.6999 - acc: 0.5040
Epoch 7/20
1000/1000 [==============================] - 0s 47us/step - loss: 0.6974 - acc: 0.5150
Epoch 8/20
1000/1000 [==============================] - 0s 40us/step - loss: 0.6937 - acc: 0.5250
Epoch 9/20
1000/1000 [==============================] - 0s 39us/step - loss: 0.6912 - acc: 0.5260
Epoch 10/20
1000/1000 [==============================] - 0s 37us/step - loss: 0.6891 - acc: 0.5260
Epoch 11/20
1000/1000 [==============================] - 0s 41us/step - loss: 0.6919 - acc: 0.5210
Epoch 12/20
1000/1000 [==============================] - 0s 43us/step - loss: 0.6926 - acc: 0.5190
Epoch 13/20
1000/1000 [==============================] - 0s 44us/step - loss: 0.6897 - acc: 0.5350
Epoch 14/20
1000/1000 [==============================] - 0s 41us/step - loss: 0.6940 - acc: 0.5140
Epoch 15/20
1000/1000 [==============================] - 0s 44us/step - loss: 0.6928 - acc: 0.5300
Epoch 16/20
1000/1000 [==============================] - 0s 56us/step - loss: 0.6925 - acc: 0.5360
Epoch 17/20
1000/1000 [==============================] - 0s 50us/step - loss: 0.6906 - acc: 0.5400
Epoch 18/20
1000/1000 [==============================] - 0s 44us/step - loss: 0.6882 - acc: 0.5330
Epoch 19/20
1000/1000 [==============================] - 0s 37us/step - loss: 0.6923 - acc: 0.5420
Epoch 20/20
1000/1000 [==============================] - 0s 40us/step - loss: 0.6893 - acc: 0.5280
100/100 [==============================] - 0s 10us/step
五、参考资料
https://blog.csdn.net/program_developer/article/details/79677557
https://stackoverflow.com/questions/49048734/runtimeerror-to-use-mkl-2018-with-theano-you-must-set-mkl-threading-layer-gnu
http://keras-cn.readthedocs.io/en/latest/backend/
http://keras-cn.readthedocs.io/en/latest/getting_started/sequential_model/