# 深度学习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

下载后安装即可(不必安装到C盘, 其他盘也可以)

安装到这里不要勾选第一个选项,

这里勾不勾选无所谓, 关掉就行

这样Anaconda就安装完成了
## 配置镜像国内源
我们可以利用conda指令来安装环境, 然是默认的下载源也十分的慢, 所以要更换国内的镜像源 可以参考
[Anaconda 镜像使用帮助](https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/)
在搜索栏中搜索 Anaconda Prompt, 右键管理员启动

执行`conda config --show` 可以看到我们目前用的是官方源

尝试下载几个包, 会看到下载速度很慢

现在我们执行`conda config --set show_channel_urls yes` 会在用户目录下生成一个`.condarc`文件, 找到这个文件并打开

将原文件里的设置替换成下面的设置
```
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`可以看到我们已将将官方下载源替换成了国内镜像源

## 创建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`环境已经添加了进来

现在我们进入`TensorFlow2`环境, 可以看到我们由`base`环境切换到了`TensorFlow2`环境
```
conda activate TensorFlow2
```

## 安装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了


中间可能会因为网络中断退出来, 再次执行下载的时候可能会让你执行这条指令
```
conda update -n base -c defaults conda
```
如果没有其他问题的话下载就完成了
### 检查 TensorFlow 是否已安装好
在 TensorFlow 环境里,输入`python` 进入 python

然后输入:
```Python
import tensorflow as tf
tf.test.is_gpu_available()
```
最后会返回`True` (cpu版会显示False)

## 在Pycharm中配置Anaconda环境
打开Pycharm - File - setting

在窗口中搜索`interpreter`, 找到Python Interpreter选项, 点击右侧的齿轮, 选择"Add"

选择`Conda Environment`, 点击 `Existing environment`, 点击右边有三个点的那个按钮

找到自己刚建的Python环境所在的目录, 一般是在你Anaconda安装的文件夹下的envs文件夹

例如我刚创建了`Tensorflow2`环境, 在这个文件夹下选择`python.exe`作为我们的编译器

选好之后就可以应用并确定了

这时我们的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 子系统)安装不完整,先不要关掉。

如果我们不使用WSL2,就会使用 Hyper-v 虚拟机运行,不过相比于虚拟机,子系统在性能方面更加出色。
[参考:安装 Docker Desktop 报错 WSL 2 installation is incomplete.](https://blog.csdn.net/qq_39611230/article/details/108625840)
解决方法:
在开始菜单搜索“启用或关闭Windows功能”

查看是否勾选了“适用于Linux的Windows子系统”

猜测可能是我们使用的 wsl2 版本老了,需要我们自己手动更新一下,**下载见群文件“wsl更新包”**
安装完成后Restart刚才的WSL2窗口,这是Docker桌面版可以运行了

## 修改Docker镜像存储位置(暂时不能用)
因为镜像默认存储在C盘,本来是想修改下Docker镜像的默认存储位置的,但是每次修改完都会导致Docker再启动失败,看评论失败的也很多的,所以暂时先不改了,有兴趣的可以看一看。
[【Docker】win10 上修改 docker 的镜像文件存储位置](https://blog.csdn.net/u013948858/article/details/80811986)
## 使用阿里云镜像仓库加速
上面我们说到Docker的网络连接也存在问题,拉去镜像的速度非常慢。所以我们可以用阿里云的镜像仓库来加速。
进入[阿里云官网](https://www.aliyun.com/),注册登录阿里云。
打开阿里云控制台,搜索容器镜像加速

找到镜像加速器,查看配置方式,一般是win10系统,所以要参考Docker for Windows的配置方式。(可以看到这里也有Docker桌面版的镜像下载源)

## 拉取TensorFlow镜像,进入Jupyter
参考教程:[Docker 介绍及 Jupyter/Tensorflow 的配置](https://zhuanlan.zhihu.com/p/65886733)
1. 打开Docker可以看到中间有串代码,复制并在cmd中执行,等待下载完成


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,我们可以在浏览器里打开

进入后会让你输入密码或token,我们可以把刚刚获取的token输入进去

现在我们可以进入Jupter

## 执行第一个程序
我们可以新建一个Python3文件,编写我们的第一个程序
代码可以在仓库文件夹"Docker"下找到

导入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环境
未写完