美文网首页程序员也有情趣Docker容器人工智能
制作一个自己的 Tensorflow 笔记本

制作一个自己的 Tensorflow 笔记本

作者: 左蓝 | 来源:发表于2017-02-16 22:57 被阅读2217次

    看你们玩 Tensorflow 玩得那么高兴,今天趁着 Tensorflow 正式版发布,我也来掺和一脚。每个人使用的编程语言都不同,官方这个 tensorflow/tensorflow 镜像是 Python 为基础的,我需要自己定制一下加入更多语言支持。

    开始之前你得对 Jupyter Notebook、Tensorflow 基本的了解。先看一眼 Tensorflow 的 Dockerfile,还是很清晰的。

    发呆... ...

    好了,脑内捋了一遍,基于 Tensorflow 镜像,添加 Golang 是最方便的,因为 Tensorflow 体积庞大不想每次构建都要在安装 Tensorflow 中等待,直接基于 Tensorflow 干吧。


    添加 Go 语言支持

    因为 Tensorflow 基于 Ubuntu 构建,所以我们得加入 Go 语言。

    # gcc for cgo
    RUN apt-get update && apt-get install -y --no-install-recommends \
            g++ \
            gcc \
            libc6-dev \
            make \
            pkg-config \
        && rm -rf /var/lib/apt/lists/*
    
    ENV GOLANG_VERSION 1.7.5
    ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz
    ENV GOLANG_DOWNLOAD_SHA256 2e4dd6c44f0693bef4e7b46cc701513d74c3cc44f2419bf519d7868b12931ac3
    
    RUN curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \
        && echo "$GOLANG_DOWNLOAD_SHA256  golang.tar.gz" | sha256sum -c - \
        && tar -C /usr/local -xzf golang.tar.gz \
        && rm golang.tar.gz
    
    ENV GOPATH /go
    ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH
    
    RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"
    
    COPY go-wrapper /usr/local/bin/
    

    以上就是 Go 语言的安装过程,一会还要精简一下,现在这样写是为了看起来舒服一些。

    接下来让 Jupyter Notebook 支持 Go 语言,在去年 Gopher Gala 会议中有人展示过一个项目:Gophernotes

    Gopher Gala

    所以我们托这个项目的福直接为 Jupyter Notebook 添加 Go 语言支持。

    # dependencies
    RUN apt-get update
    RUN apt-get install -y pkg-config libzmq3-dev build-essential python3-pip
    
    # set up golang
    ENV PATH /usr/local/go/bin:$PATH
    ENV GOPATH /go
    ENV PATH $GOPATH/bin:$PATH
    RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"
    
    # install gophernotes
    RUN go get golang.org/x/tools/cmd/goimports
    RUN go get -tags zmq_3_x github.com/gopherds/gophernotes
    RUN mkdir -p ~/.ipython/kernels/gophernotes
    RUN cp -r $GOPATH/src/github.com/gopherds/gophernotes/kernel/* ~/.ipython/kernels/gophernotes
    

    现在整合一下,准备构建镜像。在此之前我们先到 Docker Hub 中看一下 Tensorflow 的版本情况,选择适合自己电脑的版本。

    这里为了演示轻松,这里先使用 tensorflow/tensorflow:latest 这个标签构建。

    FROM tensorflow/tensorflow
    
    ENV GOLANG_VERSION 1.7.5
    ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz
    ENV GOLANG_DOWNLOAD_SHA256 2e4dd6c44f0693bef4e7b46cc701513d74c3cc44f2419bf519d7868b12931ac3
    # Set up golang
    ENV GOPATH /go
    ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH
    
    RUN apt-get update && apt-get install -y --no-install-recommends \
    # Install gcc for cgo
            g++ \
            gcc \
            libc6-dev \
            make \
            pkg-config \
    # Notebook Dependencies
            libzmq3-dev \
            build-essential \
            python3-pip \
            git && \
        rm -rf /var/lib/apt/lists/* && \
        curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz && \
        echo "$GOLANG_DOWNLOAD_SHA256  golang.tar.gz" | sha256sum -c - && \
        tar -C /usr/local -xzf golang.tar.gz && \
        rm golang.tar.gz && \
        mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH" && \
        curl -fsSL https://git.io/vDyrl -o /usr/local/bin/go-wrapper && \
    # Install Gophernotes
        go get golang.org/x/tools/cmd/goimports && \
        go get -tags zmq_3_x github.com/gopherds/gophernotes && \
        mkdir -p ~/.ipython/kernels/gophernotes && \
        cp -r $GOPATH/src/github.com/gopherds/gophernotes/kernel/* ~/.ipython/kernels/gophernotes && \
        mv /notebooks/* /go
    
    # TensorBoard
    EXPOSE 6006
    # IPython
    EXPOSE 8888
    
    WORKDIR "/go"
    
    CMD ["/run_jupyter.sh"]
    

    然后你可以先去喝一杯 Java,稍后回来。

    运行

    简单粗暴直接运行看能不能跑起来:

    $ docker run -it -p 8888:8888 --rm zuolan/tensorflow-go
    
    看起来没问题

    详细使用

    首先工作目录是 /go,启动时挂载上去就好了。需要注意的是我为了方便操作 Go 项目把工作目录设在 /go,所以如果你是完全的新手,最好把/go里面的文件复制到本地,然后再启动。
    操作如下:

    $ docker run -d --name=temp zuolan/tensorflow-go
    $ docker cp temp:/go /你的宿主机目录
    

    这样你就在本地有了一个基本的初始化数据文件,现在你可以删掉 temp 容器:

    $ docker rm -f temp
    

    然后正式启动:

    $ docker run -dit --name=go-ai \
        -p 8888:8888 \
        -p 6006:6006 \
        -v /你的宿主机目录:/go \
        -e PASSWORD=你的密码 \
        zuolan/tensorflow-go
    

    现在你可以愉♂悦♂地学习 Tensorflow 了,支持 Python 和 Go 的笔记本完成!


    本文源代码:Dockerfile

    相关文章

      网友评论

      • 2a83137e9433:看起来不错哦~ 但没有说明 此处 Tensorflow的作用是什么。。。能详细说一说嘛。。。
        左蓝:@亡命之徒 学习Tensorflow而已。

      本文标题:制作一个自己的 Tensorflow 笔记本

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