Windows+Anaconda下搭建Keras环境

    花了大半天时间终于完成了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/

猜你喜欢

转载自blog.csdn.net/qq_22885109/article/details/80995134