# 深度学习test **Repository Path**: flamme-dust/deep-learning-test ## Basic Information - **Project Name**: 深度学习test - **Description**: 用于存一些深度学习相关的教程和练习项目 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-10-15 - **Last Updated**: 2025-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README - [简介](#简介) - [本文相关](#本文相关) - [配置深度学习环境的几种方法](#配置深度学习环境的几种方法) - [(推荐)使用Ananconda虚拟环境安装TensorFlow环境(CPU/GPU版本)](#推荐使用ananconda虚拟环境安装tensorflow环境cpugpu版本) - [下载安装Anaconda](#下载安装anaconda) - [配置镜像国内源](#配置镜像国内源) - [创建Python3.7环境](#创建python37环境) - [安装tensorflow-gpu](#安装tensorflow-gpu) - [确认已经安装显卡驱动](#确认已经安装显卡驱动) - [开始装 TensorFlow-gpu](#开始装-tensorflow-gpu) - [检查 TensorFlow 是否已安装好](#检查-tensorflow-是否已安装好) - [在Pycharm中配置Anaconda环境](#在pycharm中配置anaconda环境) - [如何用Anaconda安装新的库](#如何用anaconda安装新的库) - [使用Docker安装Tensorflow环境(CPU版本)](#使用docker安装tensorflow环境cpu版本) - [下载Docker并安装](#下载docker并安装) - [问题: WSL2 installation is incompelete](#问题-wsl2-installation-is-incompelete) - [修改Docker镜像存储位置(暂时不能用)](#修改docker镜像存储位置暂时不能用) - [使用阿里云镜像仓库加速](#使用阿里云镜像仓库加速) - [拉取TensorFlow镜像,进入Jupyter](#拉取tensorflow镜像进入jupyter) - [执行第一个程序](#执行第一个程序) - [(未写)使用云端服务器配置TensorFlow环境](#未写使用云端服务器配置tensorflow环境) # 简介 ## 本文相关 记录深度学习环境搭建的过程,之后有一些项目文件也会存放在这里。 如果想要将这个仓库下载到本地,可以选择直接下载或是克隆,有关克隆的操作可以查看 [码云的帮助文档](https://gitee.com/help) 以及 [Git](https://www.liaoxuefeng.com/wiki/896043488029600/896067008724000) 的clone指令教程,有兴趣的也可以了解一些markdown这种文档编写语法(也就是在github, 码云中常见的这种) ## 配置深度学习环境的几种方法 关于对深度学习的了解其实我连入门阶段都谈不上,只能是边遇见问题边学了,经常会踩到坑,所以请各位多指出来。 > 目前了解到的配置环境的方法有这几种: 1. 在本地配置CUDA + cuDNN + tensorflow-gpu [win10+CUDA+cuDNN+tensorflow2.0](https://zhuanlan.zhihu.com/p/107683614) 2. 利用Anaconda建立虚拟环境安装CUDA cuDNN tensorflow-gpu [anaconda 创建虚拟环境和在虚拟环境下安装 tensorflow-gpu 版本](https://blog.csdn.net/qian_fighting/article/details/90605214) [anaconda 虚拟环境中安装 cuda9.0 和 tensorflow-gpu1.7.0](https://blog.csdn.net/u012428169/article/details/108222370) [Windows10 配置 Anaconda+Python3.6+TensorFlow+PyCharm](https://zhuanlan.zhihu.com/p/58607298) 3. 利用Docker安装tensorflow-cpu或在Linux系统下安装tensorflow-gpu 4. 在云端服务器上部署深度学习环境,直接用 [实验室一块 GPU 都没有怎么做深度学习?](https://www.zhihu.com/question/299434830/answer/1010987691) > 为什么要用tensorflow-gpu版本? tensorflow-cpu和tensorflow-gpu的区别就是gpu版本在大规模训练的时候运算速度更快,例如在进行图像识别训练的时候, 150个Epoch, 用1660差不多10秒就一个, 不到30分钟就完成了. CPU版本下, 锐龙3600大约2分多钟一个Epoch(工作坊里的macos要5分多钟一个), 得花个半天的时间估计才能完成, 换成更大规模的项目差距还会更大,不过小程序的话倒不用在乎。 所以如果想在本机上实现一些规模稍微大点的项目,那么gpu版本是必不可少的,不过必须是nvida的显卡(gpu) > 四种安装方法的对比 第一种方法的成功率可能是这几种方法里面最低的,尤其是在Windows系统下配置的时候,所以最好是在Linux系统下配置。(其实深度学习方面首选Linux,更稳定,更快,效率更高,但是要配置Linux的话又会花一些时间,所以目前只介绍Windows的。) 第二种方法成功率要高一些,不过在这种虚拟环境下的性能可能要比第一种低20%,唯一的问题就是网络问题,由于请求的服务器可能是在国外,所以下载速度会很慢甚至连不上,要解决这方法就是添加国内的镜像服务器地址。 第三种方法更简单,不用担心怎么配置环境,同样性能比第一种低20%,但是在Windows上只能配置cpu版本,想要配置gpu版本只能在Linux系统上,而且网络依旧是个问题。 第四种最简单,要钱( > 那么我该选择哪种方法? 由于我们是在Windows系统上配置环境,想要成功率高而且是gpu版本,所以**第二种方法(Anaconda)最推荐**,若无法配置或没有nvidia显卡也可以用第三种方法,毕竟入门阶段项目规模不会太大,可以暂时忽略cpu版和gpu版之间的速度差异。 # (推荐)使用Ananconda虚拟环境安装TensorFlow环境(CPU/GPU版本) ## 下载安装Anaconda 首先我们需要去官网下载Anaconda, 但是官网下载速度很慢, 所以我们可以选择去 [国内的镜像源](https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?C=M&O=D) 下载最新版本的Anaconda ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201016214945.png) 下载后安装即可(不必安装到C盘, 其他盘也可以) ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201016220529.png) 安装到这里不要勾选第一个选项, ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201016222356.png) 这里勾不勾选无所谓, 关掉就行 ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201016223713.png) 这样Anaconda就安装完成了 ## 配置镜像国内源 我们可以利用conda指令来安装环境, 然是默认的下载源也十分的慢, 所以要更换国内的镜像源 可以参考 [Anaconda 镜像使用帮助](https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/) 在搜索栏中搜索 Anaconda Prompt, 右键管理员启动 ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201016223915.png) 执行`conda config --show` 可以看到我们目前用的是官方源 ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201016224147.png) 尝试下载几个包, 会看到下载速度很慢 ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201016224436.png) 现在我们执行`conda config --set show_channel_urls yes` 会在用户目录下生成一个`.condarc`文件, 找到这个文件并打开 ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201016225442.png) 将原文件里的设置替换成下面的设置 ``` channels: - defaults show_channel_urls: true channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud ``` 运行`conda clean -i`清除索引缓存,保证用的是镜像站提供的索引。 这时我们再执行`conda config --show`可以看到我们已将将官方下载源替换成了国内镜像源 ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201016230312.png) ## 创建Python3.7环境 TensorFlow目前已经支持Python3.8 但是不太稳定, 所以我们选择更稳定的Python3.7 创建`Python3.7`环境, `--name`后的`TensorFlow2`只是我们给Python3.7环境设定的一个名字, 跟TensorFlow本体没有什么关系, 也可以取其他名字, 例如`Python37` 注意, 如果按照原文安装Python3.6的话, 之后安装的tensorflow-gpu会是1.x版本, 而Python3.7会默认安装2.x版本. ``` conda create --name TensorFlow2 python=3.7 ``` 很快就下载完了, 完成后执行`conda info --envs`可以看到除了我们创建的`TensorFlow`环境已经添加了进来 ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201016234158.png) 现在我们进入`TensorFlow2`环境, 可以看到我们由`base`环境切换到了`TensorFlow2`环境 ``` conda activate TensorFlow2 ``` ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201016234257.png) ## 安装tensorflow-gpu 目前我们安装的是tensorflow-gpu, 若没有安装gpu版本的条件也可以安装cpu版本 ### 确认已经安装显卡驱动 > 引自原文: *如果没装,请先到 NVIDIA 官网下载(本文是针对 NVIDIA 显卡,如果是 Intel 或者 AMD 显卡,请先哭一会...)* *注意:我们并不需要单独安装 CUDA Toolkit 或者 cuDNN。因为在安装 TensorFlow-GPU 的时候,这两个 libraries 会被自动安装。* ### 开始装 TensorFlow-gpu 先确保是在 `TensorFlow2` 这个环境下: ``` conda activate TensorFlow2 ``` 开始安装 ``` conda install tensorflow-gpu ``` 没有安装gpu版本的条件的话可以执行下面这条指令, 安装cpu版本 ``` conda install tensorflow ``` 下载的时候可以看到会默认安装cudnn和cudatoolkit, 所以我们不用再手动安装cudnn和cuda了 ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201016234557.png) ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201016235426.png) 中间可能会因为网络中断退出来, 再次执行下载的时候可能会让你执行这条指令 ``` conda update -n base -c defaults conda ``` 如果没有其他问题的话下载就完成了 ### 检查 TensorFlow 是否已安装好 在 TensorFlow 环境里,输入`python` 进入 python ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201016235907.png) 然后输入: ```Python import tensorflow as tf tf.test.is_gpu_available() ``` 最后会返回`True` (cpu版会显示False) ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201017000828.png) ## 在Pycharm中配置Anaconda环境 打开Pycharm - File - setting ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201022145742.png) 在窗口中搜索`interpreter`, 找到Python Interpreter选项, 点击右侧的齿轮, 选择"Add" ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201022145919.png) 选择`Conda Environment`, 点击 `Existing environment`, 点击右边有三个点的那个按钮 ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201022150135.png) 找到自己刚建的Python环境所在的目录, 一般是在你Anaconda安装的文件夹下的envs文件夹 ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201022150253.png) 例如我刚创建了`Tensorflow2`环境, 在这个文件夹下选择`python.exe`作为我们的编译器 ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201022150340.png) 选好之后就可以应用并确定了 ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201022150500.png) 这时我们的Python编译器环境就切换好了. ## 如何用Anaconda安装新的库 > 使用conda命令安装 参考 [imutils 库可从 Conda Forge 获得 ,因此我建议从那里安装它。 ](https://stackoom.com/question/3yfGy/%E5%A6%82%E4%BD%95%E5%9C%A8anaconda-%E4%B8%AD%E5%AE%89%E8%A3%85imutils%E5%BA%93) > 使用pip命令安装 [pypi 镜像使用帮助](https://mirrors.tuna.tsinghua.edu.cn/help/pypi/) # 使用Docker安装Tensorflow环境(CPU版本) > 什么是Docker? 关于Docker,可以参考下面这篇文章,通俗易懂,简单来说就是:谁想用我的服务,直接拉取镜像,实例化一个容器就可以了,不再像之前那样有繁复的安装过程 ———— 这些都有人给你做过了。 Docker 有什么优势? - 小狐濡尾的回答 - 知乎 https://www.zhihu.com/question/22871084/answer/88293837 **注意**,这时安装的是tensorflow-cpu, 如果你没有nvidia显卡或Anaconda那个方法不可用的话可以考虑这个方法。 **注意**,因为Docker的镜像默认安装在C盘,且修改存储位置很容易失败,如果要用这个方法请确保C盘有足够的空间。 ## 下载Docker并安装 去官网下载[Docker桌面版](https://www.docker.com/products/docker-desktop), **下载见群文件“Docker桌面版”**。 安装过程没什么需要注意的,**但是安装完后会弹出来一个界面让你重启电脑**,如果此时你正在运行别的比较重要的程序,记得提前保存并关闭,再重启电脑。 ## 问题: WSL2 installation is incompelete 下载完成后会如果弹出来一个窗口,告诉你 WSL2 (基于 Windows 的 Linux 子系统)安装不完整,先不要关掉。 ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201015210908.png) 如果我们不使用WSL2,就会使用 Hyper-v 虚拟机运行,不过相比于虚拟机,子系统在性能方面更加出色。 [参考:安装 Docker Desktop 报错 WSL 2 installation is incomplete.](https://blog.csdn.net/qq_39611230/article/details/108625840) 解决方法: 在开始菜单搜索“启用或关闭Windows功能” ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201015212103.png) 查看是否勾选了“适用于Linux的Windows子系统” ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201015212200.png) 猜测可能是我们使用的 wsl2 版本老了,需要我们自己手动更新一下,**下载见群文件“wsl更新包”** 安装完成后Restart刚才的WSL2窗口,这是Docker桌面版可以运行了 ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201015212916.png) ## 修改Docker镜像存储位置(暂时不能用) 因为镜像默认存储在C盘,本来是想修改下Docker镜像的默认存储位置的,但是每次修改完都会导致Docker再启动失败,看评论失败的也很多的,所以暂时先不改了,有兴趣的可以看一看。 [【Docker】win10 上修改 docker 的镜像文件存储位置](https://blog.csdn.net/u013948858/article/details/80811986) ## 使用阿里云镜像仓库加速 上面我们说到Docker的网络连接也存在问题,拉去镜像的速度非常慢。所以我们可以用阿里云的镜像仓库来加速。 进入[阿里云官网](https://www.aliyun.com/),注册登录阿里云。 打开阿里云控制台,搜索容器镜像加速 ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201015224223.png) 找到镜像加速器,查看配置方式,一般是win10系统,所以要参考Docker for Windows的配置方式。(可以看到这里也有Docker桌面版的镜像下载源) ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201015224302.png) ## 拉取TensorFlow镜像,进入Jupyter 参考教程:[Docker 介绍及 Jupyter/Tensorflow 的配置](https://zhuanlan.zhihu.com/p/65886733) 1. 打开Docker可以看到中间有串代码,复制并在cmd中执行,等待下载完成 ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201015224927.png) ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201015225045.png) 2. 继续在cmd中运行代码`docker pull jupyter/tensorflow-notebook`,拉取tensorflow-notebook,等待下载完成 3. 运行 jupyter/tensorflow-notebook,这里是以 detached mode 运行,注意这里的端口映射到 host 的 8888: `docker run -d -p 8888:8888 jupyter/tensorflow-notebook` 4. 查询 Container id: ``` docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 22a7a666831f jupyter/tensorflow-notebook "tini -g -- start-no…" 21 seconds ago Up 21 seconds 0.0.0.0:8888->8888/tcp hardcore_goldstine b9fc820a0984 docker/getting-started "/docker-entrypoint.…" 17 minutes ago Up 17 minutes 0.0.0.0:80->80/tcp agitated_poitras ``` 5. 获取 Token: ``` # 下面的参数 22a7a666831f 是 docker exec -it 22a7a666831f jupyter notebook list Currently running servers: http://0.0.0.0:8888/?token=ed975cd8ff6de71e4aad0e296fff53401b900faa93ce5246 :: /home/jovyan ``` 可以看到我获取的token是`ed975cd8ff6de71e4aad0e296fff53401b900faa93ce5246` 6. 到此,配置完毕,访问网页查看即可。 我们回到Docker桌面端,看到jupyter tensorflow,我们可以在浏览器里打开 ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201015233148.png) 进入后会让你输入密码或token,我们可以把刚刚获取的token输入进去 ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201015233555.png) 现在我们可以进入Jupter ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201015233630.png) ## 执行第一个程序 我们可以新建一个Python3文件,编写我们的第一个程序 代码可以在仓库文件夹"Docker"下找到 ![](https://lainundalice.oss-cn-beijing.aliyuncs.com/img/20201015235955.png) 导入tensorflow包,并命名为tf ```python import tensorflow as tf ``` 载入并准备好 MNIST 数据集(下载需要一点时间)。将样本从整数转换为浮点数: ```python mnist = tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0 ``` Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz 11493376/11490434 [==============================] - 567s 49us/step 将模型的各层堆叠起来,以搭建 tf.keras.Sequential 模型。为训练选择优化器和损失函数: ```python model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation='softmax') ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) ``` 训练并验证模型: ```python model.fit(x_train, y_train, epochs=5) model.evaluate(x_test, y_test, verbose=2) ``` Epoch 1/5 1875/1875 [==============================] - 2s 1ms/step - loss: 0.3009 - accuracy: 0.9109 Epoch 2/5 1875/1875 [==============================] - 2s 1ms/step - loss: 0.1465 - accuracy: 0.9568 Epoch 3/5 1875/1875 [==============================] - 2s 1ms/step - loss: 0.1102 - accuracy: 0.9668 Epoch 4/5 1875/1875 [==============================] - 2s 1ms/step - loss: 0.0892 - accuracy: 0.9725 Epoch 5/5 1875/1875 [==============================] - 2s 1ms/step - loss: 0.0755 - accuracy: 0.9765 313/313 - 0s - loss: 0.0758 - accuracy: 0.9769 [0.07583852112293243, 0.9768999814987183] 现在,这个照片分类器的准确度已经达到接近 98%。 # (未写)使用云端服务器配置TensorFlow环境 未写完