美文网首页Docker容器python自学
win10专业版使用docker搭建tensorflow+ker

win10专业版使用docker搭建tensorflow+ker

作者: 南瓜方糖 | 来源:发表于2018-12-27 17:31 被阅读4次

    老大有令,让我们安装下 tensorflow 和 keras,然后闲暇时研究一下神经网络。
    刚好最近在折腾 docker,公司电脑用的win10,而且还没有docker环境,所以这次顺便折腾下 windows 版的 docker。

    系统环境

    win10 家庭版没有 heyper-v,可以搜下专业版的激活密钥,重新激活后就成了专业版。

    然后在 控制面板 -> 程序 -> 启用或关闭 Windows 功能 -> 勾选 heyper-v,然后重启。

    重启后下载安装 docker 。
    [ 点我下载 ]


    编写 dockerfile

    从 tensorflow 镜像中安装 keras,jupyter 和 tensorflow 在镜像中已经安装过了,我们只需要把 keras 安装即可。

    
    FROM tensorflow/tensorflow
    #FROM tensorflow/tensorflow:tag-py3 python3版本
    
    RUN apt-get update -y
    
    RUN pip --no-cache-dir install keras
    
    

    docker-compose.yml

    windows 挂载目录是比较坑的,需要通过 /c/www/python/notebooks 这样的绝对路径挂载。

    如果这样写还报错,在下图的设置勾掉,然后再勾上。

    shared drives

    docker-compose.yml 内容:

    
    version: '3.7'
    services:
      python:
        build: .
        volumes:
          - /c/www/python/notebooks:/notebooks:rw
          - /c/www/python/tmp:/tmp:rw
        ports:
          - "8888:8888"
          - "6006:6006"
    
    

    pycharm 连接 python 容器

    开发工具是 win10 系统内安装的 pycham 2018.3,在 docker -> setting -> general -> 勾选最后一项 expose deamon on tcp://localhost:2375 without TLS 打开守护程序。

    这个不开 pycharm 是无法连接 docker 的。

    docker-server

    按照图上的位置,在 pycharm 中添加 docker,接下来还需要引入 python 的解析器。

    setting -> project python -> project interpreter 中添加一个 docker,然后选择 python 镜像,等待导入完成后,写个栗子运行下。

    select python
    
    print('hello world! I am python from docker.')
    
    

    e36ec1af4f5a:python -u /opt/project/hello-world.py
    hello world! I am python from docker.

    Process finished with exit code 0

    右键运行,可以看到控制台的输出。

    如果遇到下边的报错,重启下 docker 。

    14:28 Error running 'hello-world'
    Can't run remote python interpreter: com.github.dockerjava.api.exception.InternalServerErrorException: {"message":"error while creating mount source path '/host_mnt/c/www/python': mkdir /host_mnt/c: file exists"}

    测试

    tensorflow:

    
    import tensorflow as tf
    
    hello = tf.constant('Hello TendorFlow!')
    sess = tf.Session()
    print(sess.run(hello))
    
    

    右键运行,虽然输出了,但是也收获了警告一枚:

    38266a5dfbb2:python -u /opt/project/hello-world.py
    2018-12-27 06:36:56.711577: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
    Hello TendorFlow!

    Process finished with exit code 0

    意思是我下载的版本不支持 cpu 的 AVX2 ,查了下资料,只是警告说如果从源代码构建 TensorFlow,它可以在机器上跑的更快。

    在我这个连显卡都没有的开发机上,我也不指望它能跑多快啊 Σ( ° △ °|||)︴

    算了,我选择无视这个问题。 😏

    测试也可以通过 jupyter 新建运行,保存后文件就放在上边挂载的 notebooks 文件夹。

    jupyter

    keras:

    
    import keras
    
    

    在 pycharm 里第一句就是红的,跑到容器内运行下 pythonimport keras 也是可以的,只有外边的引用出了问题。

    打开配置看看,里边果然有好几个环境,我之前选的 tensorflow 的,那么换一个试试:


    切换配置

    更新完成后,复制下边的栗子进去再次运行,虽然代码提示还是红的,但是已经能够成功运行了:

    
    import keras
    from keras.models import Sequential
    from keras.layers import Dense, Dropout, Activation
    from keras.optimizers import SGD
    
    # Generate dummy data
    import numpy as np
    x_train = np.random.random((1000, 20))
    y_train = keras.utils.to_categorical(np.random.randint(10, size=(1000, 1)), num_classes=10)
    x_test = np.random.random((100, 20))
    y_test = keras.utils.to_categorical(np.random.randint(10, size=(100, 1)), num_classes=10)
    
    model = Sequential()
    # Dense(64) is a fully-connected layer with 64 hidden units.
    # in the first layer, you must specify the expected input data shape:
    # here, 20-dimensional vectors.
    model.add(Dense(64, activation='relu', input_dim=20))
    model.add(Dropout(0.5))
    model.add(Dense(64, activation='relu'))
    model.add(Dropout(0.5))
    model.add(Dense(10, activation='softmax'))
    
    sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
    model.compile(loss='categorical_crossentropy',
                  optimizer=sgd,
                  metrics=['accuracy'])
    
    model.fit(x_train, y_train,
              epochs=20,
              batch_size=128)
    score = model.evaluate(x_test, y_test, batch_size=128)
    
    
    

    贴进 jupyter 运行,一样完美。


    jupyter

    结尾

    tensorflow 和 keras 到此结束,接下来等待老大进一步命令。

    相关文章

      网友评论

        本文标题:win10专业版使用docker搭建tensorflow+ker

        本文链接:https://www.haomeiwen.com/subject/rkwhlqtx.html