如何使用TensorFlow设置Udacity Deep Learning类的学习环境(Windows)

我相信很多有兴趣学习DL的人都听过这个课程:

https://www.udacity.com/course/deep-learning–ud730

我现在正在学习这门课程,希望分享如何从头开始在Windows上设置学习环境的逐步指导。

  • 设置环境的第一个答案是关于build立学习环境。 你只运行一次。

  • 第二个名为AFTER LOCAL MACHINE REBOOT的答案是关于如何在重新启动计算机后启动环境。

  • 查看第三个名为“ 如何工作”的答案,以了解所有这些东西是如何工作的(或者你可以盲目地遵循第一个答案并在以后检查出来)。

设置环境(只运行一次!)

注意要在计算机重新引导后启动就绪环境,请在第二个答案中使用AFTER LOCAL MACHINE REBOOT指令。


脚步:

  1. 下载并设置Docker Toolbox:

https://www.docker.com/products/docker-toolbox

Docker是在您的机器上部署预先configuration的虚拟学习环境的工具。 它将在虚拟机内运行,不会妨碍您的计算机。

  1. (可选步骤) Docker会将它的文件放在系统磁盘(C :)上,如果使用SSD,则可能需要更改。 你可以这样做:

mklink / J“C:\ Users \ USER \ .docker”“D:\ Docker”

  • 用您的用户名代替USER
  • “D:\ Docker”replace为您要存储Docker文件的其他驱动器上的path

更多信息: 更改Windows上的.docker目录

  1. 打开Windows CMD。 转到安装Docker的文件夹。 创build一个新的docker机器:

docker-machine创buildvdocker -d virtualbox

  1. (魔法步)只要运行它!

FOR / f“tokens = *”%i IN('docker-machine env –shell cmd vdocker')DO%i

更多at: 如何启动tensorflow docker jupyter笔记本

  1. 下载并安装预先configuration的分配泊坞窗图像

docker运行-it -p 8888:8888 -p 6006:6006 – 名称tensorflow-udacity -it b.gcr.io/tensorflow-udacity/assignments:0.5.0

  1. (重要的一步!)configuration端口转发:
    • 运行Oracle VM VirtualBox链接(在安装Docker时应该创build):

在这里输入图像说明

  • 转到vdocker机器的设置…:

在这里输入图像说明

  • 添加端口转发(将虚拟环境中的8888端口转发到本地计算机上的8810端口):

在这里输入图像说明

PS使用:8810端口的情况下,你已经在本地机器上安装了IPython笔记本。

  1. 在设置…菜单(从上一步)允许虚拟机更多的内存:

注意必须先closuresVirtualBox,然后才能更改系统设置。 (由jlarsch提供)

使用以下命令停止VM:

docker机停止vdocker

在这里输入图像说明

(可选)您也可以允许它使用更多核心,以便运行更快:

在这里输入图像说明

  1. 利润!

在这里输入图像说明

本地机器重新启动后

要在计算机重新启动后开始学习环境,请创build包含以下内容的.bat文件(我称之为udacity-tf-start.bat ):

 call docker-machine start vdocker FOR /f "tokens=*" %%i IN ('docker-machine env --shell cmd vdocker') DO %%i call docker start -ai tensorflow-udacity 

重要! %%是一种转义,你只需要它在一个BAT文件 。 如果您通过命令行运行同一组命令,则应该使用:

 FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd vdocker') DO %i 

在这里补充的其他答案是我的docker机创build/运行/启动的启动脚本。 安装过程现在归结为从https://docs.docker.com/toolbox/toolbox_install_windows/安装最新版本的docker工具箱(这应该自动安装vbox)并运行脚本:

 @echo off set DOCKERMACHINENAME=tensorflow-udacity set REPOSITORY=gcr.io/tensorflow/udacity-assignments:0.6.0 set "LOCALDIR0=/%SystemDrive:~0,1%/" call :LoCase LOCALDIR0 SET "LOCALDIR=%LOCALDIR0%Users/%USERNAME%" docker-machine.exe env %DOCKERMACHINENAME% > nul 2> nul if "%errorlevel%"=="0" goto m_exists ::Machine has to be created docker-machine create -d virtualbox --virtualbox-memory 8196 %DOCKERMACHINENAME% :m_exists ::Check if machine needs to be restarted docker-machine ip %DOCKERMACHINENAME% > nul 2>nul if not "%errorlevel%"=="0" (docker-machine.exe restart %DOCKERMACHINENAME%) FOR /F "tokens=*" %%i IN ('docker-machine env --shell cmd %DOCKERMACHINENAME%') DO %%i FOR /F "tokens=*" %%F IN ('docker-machine ip %DOCKERMACHINENAME%') DO (SET DOCKERMACHINEIP=%%F) echo Access to iPython: %DOCKERMACHINEIP%:8888 docker inspect %DOCKERMACHINENAME% > nul 2> nul if "%errorlevel%"=="0" goto m_started :: Machine has to be started docker run -p 8888:8888 --name %DOCKERMACHINENAME% -v %LOCALDIR%:/mnt/hosttmp:rw -it %REPOSITORY% goto finished :m_started docker start -ai %DOCKERMACHINENAME% goto finished :LoCase FOR %%i IN ("A=a" "B=b" "C=c" "D=d" "E=e" "F=f" "G=g" "H=h" "I=i" "J=j" "K=k" "L=l" "M=m" "N=n" "O=o" "P=p" "Q=q" "R=r" "S=s" "T=t" "U=u" "V=v" "W=w" "X=x" "Y=y" "Z=z") DO CALL SET "%1=%%%1:%%~i%%" :finished ::hint: to remove container use: docker rm %DOCKERMACHINENAME% 

如何工作

免责声明:这可能有点类似于克里斯托弗·诺兰的电影的情节。

整体画面

在这里输入图像说明

细节

由于Windows操作系统的一些限制, Docker无法在本地运行(还)。 这就是为什么我们首先创build一个虚拟框:

docker -machine创buildvdocker -d virtualbox

下一步(表示为魔术步骤 )为docker命令设置一些环境variables,以便能够连接到在虚拟框中运行的docker守护进程

FOR / f“tokens = *”%i IN('docker-machine env –shell cmd vdocker ')DO%i

 >SET DOCKER_TLS_VERIFY=1 >SET DOCKER_HOST=tcp://192.168.99.100:2376 >SET DOCKER_CERT_PATH=C:\Users\USER\.docker\machine\machines\vdocker >SET DOCKER_MACHINE_NAME=vdocker 

然后我们运行:

docker运行-it -p 8888:8888 -p 6006:6006 – 名称tensorflow-udacity -it b.gcr.io/tensorflow-udacity/assignments:0.5.0

从指定的URL下载的映像中创build一个名为tensorflow-udacity的docker 容器重要! 该容器在虚拟框中运行。

注意-p标志:

-p 8888:8888 -p 6006:6006

它会告诉docker守护进程将一个容器的端口8888转发(发布)到主机(虚拟盒)端口8888.它在Windows机器上不可用!

现在我们再添加一个端口转发规则到虚拟框设置:

在这里输入图像说明