Keras+Tensorflow部署在Jupyter+Spark+Docker教程

原创
2016/10/15 12:41
阅读数 1.8K

#安装Keras on Docker的两种方法 Keras是一个机器学习的框架,支持Theano和Tensorflow作为神经网络计算引擎。Keras是采用Python的,可以配置通过Jupyter进行使用,就非常方便了。为了安装和部署方便,我们将其放到Docker中运行。

A. 为了在Docker中安装Keras,我们可以选择一个Docker基础镜像。但是没有找到安装Jupyter的版本,我们自己可以手动进行安装( https://my.oschina.net/u/2306127/blog/747755 ),只是步骤稍微多一些。

B. 我们也可以使用Jupyter官方的基础镜像(https://github.com/jupyter/docker-stacks ),然后在里面安装Keras和Tensorflow。这里主要介绍这一种方法,优势是Python和Juyter的支持非常完整。

1. 安装支持环境

1.1 安装Docker容器支持环境

我用的Mac OS X,现在的Docker已经原生支持了,不用像以前要安装VirtualBox,再使用Vagrant了。
到这里http://www.docker.io下载相应的版本,然后运行安装程序,就可以了。

如果使用Ubuntu,建议使用 http://get.docker.io下载的脚本进行安装,官方的安装方法貌似与Ubuntu内置的lxd有冲突,经常出问题。方法如下:

wget http://get.docker.io -O docker-setup.sh
sudo chmod +x docker-setup.sh
./docker-setup.sh

1.2 安装Jupyter Notebook容器

采用Jupyter的官方Docker技术栈

docker run -it --name GISpark 
    -p 9000:8888 
    --user root -e GRANT_SUDO=yes 
    -v /本地目录/GISpark:/home/jovyan/work/GISpark 
    jupyter/all-spark-notebook

1.3 安装和更新容器内软件

打开浏览器,输入:http://localhost:9000。

2. 安装机器学习支持库

2.1 安装python基础开发包

sudo apt update
sudo apt upgrade
source activate root

sudo apt install -y python3-dev python3-pip python3-nose gcc g++ git gfortran vim
sudo apt install -y libopenblas-dev liblapack-dev libatlas-base-dev
sudo pip3 install -U --pre pip setuptools wheel
sudo pip3 install -U --pre numpy scipy matplotlib scikit-learn scikit-image
sudo pip3 install -U --pre keras

** 注意,因为该镜像中安装了最新的conda版本管理工具,使用的是Python3.5,而操作系统安装的Python3.4,二者的目录结构不一样。因此,应先使用source activate root切换到conda的环境,再进行安装。**

2.2 安装Theano支持库

sudo pip3 install -U --pre theano

2.3 安装Tensorflow支持库

conda install -c conda-forge tensorflow

参考:

3. 运行测试

点取“New”按钮,选取“Python3”,创建一个新的Notebook。 创建新的Notebook

3.1 验证Theano

在新创建的notebook中,输入以下内容,按shift+enter键运行。

import theano
import keras
help(theano)

如果出现下面信息,就安装成功了。

Help on package keras:

NAME
    keras

PACKAGE CONTENTS
    activations
    applications (package)
    backend (package)
    callbacks
    constraints
    datasets (package)
    engine (package)
    initializations
    layers (package)
    legacy (package)
    metrics
    models
    objectives
    optimizers
    preprocessing (package)
    regularizers
    utils (package)
    wrappers (package)

DATA
    absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0...

VERSION
    1.1.0

FILE
    /opt/conda/lib/python3.5/site-packages/keras/__init__.py

3.2 验证Tensorflow

再新创建notebook,输入以下内容,按shift+enter键运行。

import tensorflow as tf

# Create a Constant op that produces a 1x2 matrix.  The op is
# added as a node to the default graph.
#
# The value returned by the constructor represents the output
# of the Constant op.
matrix1 = tf.constant([[3., 3.]])

# Create another Constant that produces a 2x1 matrix.
matrix2 = tf.constant([[2.],[2.]])

# Create a Matmul op that takes 'matrix1' and 'matrix2' as inputs.
# The returned value, 'product', represents the result of the matrix
# multiplication.
product = tf.matmul(matrix1, matrix2)

# Launch the default graph.
sess = tf.Session()

# To run the matmul op we call the session 'run()' method, passing 'product'
# which represents the output of the matmul op.  This indicates to the call
# that we want to get the output of the matmul op back.
#
# All inputs needed by the op are run automatically by the session.  They
# typically are run in parallel.
#
# The call 'run(product)' thus causes the execution of three ops in the
# graph: the two constants and matmul.
#
# The output of the op is returned in 'result' as a numpy `ndarray` object.
result = sess.run(product)
print(result)
# ==> [[ 12.]]

# Close the Session when we're done.
sess.close()

如果成功运行,表明Tensorflow也安装成功了。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部