如何使用TensorFlow设置Udacity Deep Learning类的学习环境(Windows)
我相信很多有兴趣学习DL的人都听过这个课程:
https://www.udacity.com/course/deep-learning–ud730
我现在正在学习这门课程,希望分享如何从头开始在Windows上设置学习环境的逐步指导。
-
设置环境的第一个答案是关于build立学习环境。 你只运行一次。
-
第二个名为AFTER LOCAL MACHINE REBOOT的答案是关于如何在重新启动计算机后启动环境。
-
查看第三个名为“ 如何工作”的答案,以了解所有这些东西是如何工作的(或者你可以盲目地遵循第一个答案并在以后检查出来)。
设置环境(只运行一次!)
注意要在计算机重新引导后启动就绪环境,请在第二个答案中使用AFTER LOCAL MACHINE REBOOT指令。
脚步:
- 下载并设置Docker Toolbox:
https://www.docker.com/products/docker-toolbox
Docker是在您的机器上部署预先configuration的虚拟学习环境的工具。 它将在虚拟机内运行,不会妨碍您的计算机。
- (可选步骤) Docker会将它的文件放在系统磁盘(C :)上,如果使用SSD,则可能需要更改。 你可以这样做:
mklink / J“C:\ Users \ USER \ .docker”“D:\ Docker”
- 用您的用户名代替USER
- 将“D:\ Docker”replace为您要存储Docker文件的其他驱动器上的path
更多信息: 更改Windows上的.docker目录
- 打开Windows CMD。 转到安装Docker的文件夹。 创build一个新的docker机器:
docker-machine创buildvdocker -d virtualbox
- (魔法步)只要运行它!
FOR / f“tokens = *”%i IN('docker-machine env –shell cmd vdocker')DO%i
更多at: 如何启动tensorflow docker jupyter笔记本
- 下载并安装预先configuration的分配泊坞窗图像 :
docker运行-it -p 8888:8888 -p 6006:6006 – 名称tensorflow-udacity -it b.gcr.io/tensorflow-udacity/assignments:0.5.0
- (重要的一步!)configuration端口转发:
- 运行Oracle VM VirtualBox链接(在安装Docker时应该创build):
- 转到vdocker机器的设置…:
- 添加端口转发(将虚拟环境中的8888端口转发到本地计算机上的8810端口):
PS使用:8810端口的情况下,你已经在本地机器上安装了IPython笔记本。
- 在设置…菜单(从上一步)允许虚拟机更多的内存:
注意必须先closuresVirtualBox,然后才能更改系统设置。 (由jlarsch提供)
使用以下命令停止VM:
docker机停止vdocker
(可选)您也可以允许它使用更多核心,以便运行更快:
- 利润!
本地机器重新启动后
要在计算机重新启动后开始学习环境,请创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机器上不可用!
现在我们再添加一个端口转发规则到虚拟框设置: