深度学习

深度学习是一种机器学习技术,它通过模拟人脑神经网络的工作方式来处理和学习数据。与传统的机器学习方法不同,深度学习模型能够自动从大量数据中提取复杂的特征,而不需要人工设计特征。这种能力使得深度学习在图像识别、语音识别、自然语言处理等领域取得了显著的成果。

本文主要介绍我的深度学习环境搭建,基础学习方法等。

机器学习基础

  • 语言基础:Python
  • 视频学习:哔哩哔哩up主跟李沐学AI【完结】动手学深度学习PyTorch版视频。
  • 配套图书:《动手学深度学习》(机器学习领域的经典之作)

环境搭建

按照下面的环境搭建方法,当你需要安装GPU训练环境时,只需要安装Nvidia显卡驱动,不需要安装CUDA和cuDNN。这是因为,PyTorch和Tensorflow深度学习框架在安装时自带CUDA和cuDNN。

Python环境搭建

我的Python环境主要依赖于uv,有关uv的详细内容可以参考我的博客uv

PyTorch环境搭建

有关PyTorch的详细内容可以参考PyTorch官方文档

PyTorch-Python版本对应关系

安装最新版本的PyTorch,可以直接去PyTorch官方文档查看所需Python版本和安装命令。

需要安装旧版的PyTorch,就要查看PyTorch-Python版本对照表PyTorch安装命令

pip安装PyTorch镜像

将官方镜像替换为阿里云镜像,速度更快。

方法:将 --index-url(-i) 替换为 --find-links(-f),将https://download.pytorch.org/whl替换为https://mirrors.aliyun.com/pytorch-wheels

1
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 -f https://mirrors.aliyun.com/pytorch-wheels/cu124

上海交通大学镜像

1
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 -f https://mirror.sjtu.edu.cn/pytorch-wheels/cu118

安装命令

初始化项目

1
uv init

配置pyproject.toml

cpu
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cpu = [
"torch>=1.12.0",
"torchvision>=0.13.0",
"torchaudio>=0.12.0",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cpu" },
]
torchvision = [
{ index = "pytorch-cpu" },
]
torchaudio = [
{ index = "pytorch-cpu" },
]

[[tool.uv.index]]
name = "pytorch-cpu"
url = "https://download.pytorch.org/whl/cpu"
explicit = true
cu128
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu128 = [
"torch>=2.7.0; python_version >= '3.9'",
"torchvision>=0.22.0; python_version >= '3.9'",
"torchaudio>=2.7.0; python_version >= '3.9'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu128" },
]
torchvision = [
{ index = "pytorch-cu128" },
]
torchaudio = [
{ index = "pytorch-cu128" },
]

[[tool.uv.index]]
name = "pytorch-cu128"
url = "https://download.pytorch.org/whl/cu128"
explicit = true
cu126
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu126 = [
"torch>=2.6.0; python_version >= '3.9'",
"torchvision>=0.21.0; python_version >= '3.9'",
"torchaudio>=2.6.0; python_version >= '3.9'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu126" },
]
torchvision = [
{ index = "pytorch-cu126" },
]
torchaudio = [
{ index = "pytorch-cu126" },
]

[[tool.uv.index]]
name = "pytorch-cu126"
url = "https://download.pytorch.org/whl/cu126"
explicit = true
cu124
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu124 = [
"torch>=2.4.0,<2.5.0; python_version >= '3.8' and python_version < '3.13'",
"torchvision>=0.19.0,<0.20.0; python_version >= '3.8' and python_version < '3.13'",
"torchaudio>=2.4.0,<2.5.0; python_version >= '3.8' and python_version < '3.13'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu124" },
]
torchvision = [
{ index = "pytorch-cu124" },
]
torchaudio = [
{ index = "pytorch-cu124" },
]

[[tool.uv.index]]
name = "pytorch-cu124"
url = "https://download.pytorch.org/whl/cu124"
explicit = true
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu124 = [
"torch>=2.5.0; python_version >= '3.9'",
"torchvision>=0.20.0; python_version >= '3.9'",
"torchaudio>=2.5.0; python_version >= '3.9'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu124" },
]
torchvision = [
{ index = "pytorch-cu124" },
]
torchaudio = [
{ index = "pytorch-cu124" },
]

[[tool.uv.index]]
name = "pytorch-cu124"
url = "https://download.pytorch.org/whl/cu124"
explicit = true
cu121
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu121 = [
"torch>=2.1.0,<2.4.0; python_version >= '3.8' and python_version < '3.12'",
"torchvision>=0.16.0,<0.19.0; python_version >= '3.8' and python_version < '3.12'",
"torchaudio>=2.1.0,<2.4.0; python_version >= '3.8' and python_version < '3.12'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu121" },
]
torchvision = [
{ index = "pytorch-cu121" },
]
torchaudio = [
{ index = "pytorch-cu121" },
]

[[tool.uv.index]]
name = "pytorch-cu121"
url = "https://download.pytorch.org/whl/cu121"
explicit = true
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu121 = [
"torch>=2.4.0,<2.5.0; python_version >= '3.8' and python_version < '3.13'",
"torchvision>=0.19.0,<0.20.0; python_version >= '3.8' and python_version < '3.13'",
"torchaudio>=2.4.0,<2.5.0; python_version >= '3.8' and python_version < '3.13'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu121" },
]
torchvision = [
{ index = "pytorch-cu121" },
]
torchaudio = [
{ index = "pytorch-cu121" },
]

[[tool.uv.index]]
name = "pytorch-cu121"
url = "https://download.pytorch.org/whl/cu121"
explicit = true
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu121 = [
"torch>=2.5.0; python_version >= '3.9'",
"torchvision>=0.20.0; python_version >= '3.9'",
"torchaudio>=2.5.0; python_version >= '3.9'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu121" },
]
torchvision = [
{ index = "pytorch-cu121" },
]
torchaudio = [
{ index = "pytorch-cu121" },
]

[[tool.uv.index]]
name = "pytorch-cu121"
url = "https://download.pytorch.org/whl/cu121"
explicit = true
cu118
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu118 = [
"torch>=2.1.0,<2.4.0; python_version >= '3.8' and python_version < '3.12'",
"torchvision>=0.16.0,<0.19.0; python_version >= '3.8' and python_version < '3.12'",
"torchaudio>=2.1.0,<2.4.0; python_version >= '3.8' and python_version < '3.12'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu118" },
]
torchvision = [
{ index = "pytorch-cu118" },
]
torchaudio = [
{ index = "pytorch-cu118" },
]

[[tool.uv.index]]
name = "pytorch-cu118"
url = "https://download.pytorch.org/whl/cu118"
explicit = true
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu118 = [
"torch>=2.4.0,<2.5.0; python_version >= '3.8' and python_version < '3.13'",
"torchvision>=0.19.0,<0.20.0; python_version >= '3.8' and python_version < '3.13'",
"torchaudio>=2.4.0,<2.5.0; python_version >= '3.8' and python_version < '3.13'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu118" },
]
torchvision = [
{ index = "pytorch-cu118" },
]
torchaudio = [
{ index = "pytorch-cu118" },
]

[[tool.uv.index]]
name = "pytorch-cu118"
url = "https://download.pytorch.org/whl/cu118"
explicit = true
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu118 = [
"torch>=2.5.0; python_version >= '3.9'",
"torchvision>=0.20.0; python_version >= '3.9'",
"torchaudio>=2.5.0; python_version >= '3.9'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu118" },
]
torchvision = [
{ index = "pytorch-cu118" },
]
torchaudio = [
{ index = "pytorch-cu118" },
]

[[tool.uv.index]]
name = "pytorch-cu118"
url = "https://download.pytorch.org/whl/cu118"
explicit = true
cu117
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu117 = [
"torch>=1.13.0,<2.0.0; python_version >= '3.8' and python_version < '3.11'",
"torchvision>=0.14.0,<0.15.0; python_version >= '3.8' and python_version < '3.11'",
"torchaudio>=0.13.0,<2.0.0; python_version >= '3.8' and python_version < '3.11'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu117" },
]
torchvision = [
{ index = "pytorch-cu117" },
]
torchaudio = [
{ index = "pytorch-cu117" },
]

[[tool.uv.index]]
name = "pytorch-cu117"
url = "https://download.pytorch.org/whl/cu117"
explicit = true
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu117 = [
"torch>=2.0.0,<2.1.0; python_version >= '3.8' and python_version < '3.12'",
"torchvision>=0.15.0,<0.16.0; python_version >= '3.8' and python_version < '3.12'",
"torchaudio>=2.0.0,<2.1.0; python_version >= '3.8' and python_version < '3.12'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu117" },
]
torchvision = [
{ index = "pytorch-cu117" },
]
torchaudio = [
{ index = "pytorch-cu117" },
]

[[tool.uv.index]]
name = "pytorch-cu117"
url = "https://download.pytorch.org/whl/cu117"
explicit = true
cu116
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu116 = [
"torch>=1.12.0,<2.0.0; python_version >= '3.8' and python_version < '3.11'",
"torchvision>=0.13.0,<0.15.0; python_version >= '3.8' and python_version < '3.11'",
"torchaudio>=0.13.0,<2.0.0; python_version >= '3.8' and python_version < '3.11'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu116" },
]
torchvision = [
{ index = "pytorch-cu116" },
]
torchaudio = [
{ index = "pytorch-cu116" },
]

[[tool.uv.index]]
name = "pytorch-cu116"
url = "https://download.pytorch.org/whl/cu116"
explicit = true
cu113
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu113 = [
"torch>=1.11.0,<1.13.0; python_version >= '3.8' and python_version < '3.11'",
"torchvision>=0.12.0,<0.14.0; python_version >= '3.8' and python_version < '3.11'",
"torchaudio>=0.11.0,<0.13.0; python_version >= '3.8' and python_version < '3.11'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu113" },
]
torchvision = [
{ index = "pytorch-cu113" },
]
torchaudio = [
{ index = "pytorch-cu113" },
]

[[tool.uv.index]]
name = "pytorch-cu113"
url = "https://download.pytorch.org/whl/cu113"
explicit = true
cu111
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu111 = [
"torch>=1.9.0,<1.11.0; python_version >= '3.8' and python_version < '3.10'",
"torchvision>=0.10.0,<0.12.0; python_version >= '3.8' and python_version < '3.10'",
"torchaudio>=0.9.0,<0.11.0; python_version >= '3.8' and python_version < '3.10'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu111" },
]
torchvision = [
{ index = "pytorch-cu111" },
]
torchaudio = [
{ index = "pytorch-cu111" },
]

[[tool.uv.index]]
name = "pytorch-cu111"
url = "https://download.pytorch.org/whl/cu111"
explicit = true
cu102
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu102 = [
"torch>=1.9.0,<1.11.0; python_version >= '3.8' and python_version < '3.10'",
"torchvision>=0.10.0,<0.12.0; python_version >= '3.8' and python_version < '3.10'",
"torchaudio>=0.9.0,<0.11.0; python_version >= '3.8' and python_version < '3.10'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu102" },
]
torchvision = [
{ index = "pytorch-cu102" },
]
torchaudio = [
{ index = "pytorch-cu102" },
]

[[tool.uv.index]]
name = "pytorch-cu102"
url = "https://download.pytorch.org/whl/cu102"
explicit = true
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[project.optional-dependencies]
cu102 = [
"torch>=1.11.0,<1.13.0; python_version >= '3.8' and python_version < '3.11'",
"torchvision>=0.12.0,<0.14.0; python_version >= '3.8' and python_version < '3.11'",
"torchaudio>=0.11.0,<0.13.0; python_version >= '3.8' and python_version < '3.11'",
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu102" },
]
torchvision = [
{ index = "pytorch-cu102" },
]
torchaudio = [
{ index = "pytorch-cu102" },
]

[[tool.uv.index]]
name = "pytorch-cu102"
url = "https://download.pytorch.org/whl/cu102"
explicit = true
自选安装
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
[project.optional-dependencies]
cu118 = [
"torch>=2.1.0,<2.5.0; python_version >= '3.8' and python_version < '3.9'",
"torchvision>=0.16.0,<0.20.0; python_version >= '3.8' and python_version < '3.9'",
"torchaudio>=2.1.0,<2.5.0; python_version >= '3.8' and python_version < '3.9'",
"torch>=2.5.0; python_version >= '3.9'",
"torchvision>=0.20.0; python_version >= '3.9'",
"torchaudio>=2.5.0; python_version >= '3.9'",
]
cu121 = [
"torch>=2.1.0,<2.5.0; python_version >= '3.8' and python_version < '3.9'",
"torchvision>=0.16.0,<0.20.0; python_version >= '3.8' and python_version < '3.9'",
"torchaudio>=2.1.0,<2.5.0; python_version >= '3.8' and python_version < '3.9'",
"torch>=2.5.0; python_version >= '3.9'",
"torchvision>=0.20.0; python_version >= '3.9'",
"torchaudio>=2.5.0; python_version >= '3.9'",
]
cu124 = [
"torch>=2.4.0,<2.5.0; python_version >= '3.8' and python_version < '3.9'",
"torchvision>=0.19.0,<0.20.0; python_version >= '3.8' and python_version < '3.9'",
"torchaudio>=2.4.0,<2.5.0; python_version >= '3.8' and python_version < '3.9'",
"torch>=2.5.0; python_version >= '3.9'",
"torchvision>=0.20.0; python_version >= '3.9'",
"torchaudio>=2.5.0; python_version >= '3.9'",
]
cu126 = [
"torch>=2.6.0; python_version >= '3.9'",
"torchvision>=0.21.0; python_version >= '3.9'",
"torchaudio>=2.6.0; python_version >= '3.9'",
]
cu128 = [
"torch>=2.7.0; python_version >= '3.9'",
"torchvision>=0.22.0; python_version >= '3.9'",
"torchaudio>=2.7.0; python_version >= '3.9'",
]
cpu = [
"torch>=2.1.0",
"torchvision>=0.16.0",
"torchaudio>=2.1.0",
]

[tool.uv]
conflicts = [
[
{ extra = "cu118" },
{ extra = "cu121" },
{ extra = "cu124" },
{ extra = "cu126" },
{ extra = "cu128" },
{ extra = "cpu" },
],
]

[tool.uv.sources]
torch = [
{ index = "pytorch-cu118", extra = "cu118" },
{ index = "pytorch-cu121", extra = "cu121" },
{ index = "pytorch-cu124", extra = "cu124" },
{ index = "pytorch-cu126", extra = "cu126" },
{ index = "pytorch-cu128", extra = "cu128" },
{ index = "pytorch-cpu", extra = "cpu" },
]
torchvision = [
{ index = "pytorch-cu118", extra = "cu118" },
{ index = "pytorch-cu121", extra = "cu121" },
{ index = "pytorch-cu124", extra = "cu124" },
{ index = "pytorch-cu126", extra = "cu126" },
{ index = "pytorch-cu128", extra = "cu128" },
{ index = "pytorch-cpu", extra = "cpu" },
]
torchaudio = [
{ index = "pytorch-cu118", extra = "cu118" },
{ index = "pytorch-cu121", extra = "cu121" },
{ index = "pytorch-cu124", extra = "cu124" },
{ index = "pytorch-cu126", extra = "cu126" },
{ index = "pytorch-cu128", extra = "cu128" },
{ index = "pytorch-cpu", extra = "cpu" },
]

[[tool.uv.index]]
name = "pytorch-cu118"
url = "https://download.pytorch.org/whl/cu118"
explicit = true

[[tool.uv.index]]
name = "pytorch-cu121"
url = "https://download.pytorch.org/whl/cu121"
explicit = true

[[tool.uv.index]]
name = "pytorch-cu124"
url = "https://download.pytorch.org/whl/cu124"
explicit = true

[[tool.uv.index]]
name = "pytorch-cu126"
url = "https://download.pytorch.org/whl/cu126"
explicit = true

[[tool.uv.index]]
name = "pytorch-cu128"
url = "https://download.pytorch.org/whl/cu128"
explicit = true

[[tool.uv.index]]
name = "pytorch-cpu"
url = "https://download.pytorch.org/whl/cpu"
explicit = true

添加需要的库

1
uv add jupyter pandas matplotlib

Tensorflow环境搭建

安装最新版本的Tensorflow,可以直接去Tensorflow官方文档查看所需Python版本和安装命令。

Tensorflow版本对应关系

在Linux环境下安装Tensorflow GPU版的版本对应关系

在Windows环境下安装Tensorflow GPU版的版本对应关系

Windows环境下Tensorflow GPU版无法安装最新版。

Linux环境下安装Tensorflow

安装最新版Tensorflow的CPU版本

1
uv add tensorflow

安装最新版Tensorflow的GPU版本

1
uv add tensorflow[and-cuda]

非root用户安装本地CUDA

如果你没有root权限,无法安装系统级的CUDA,可以选择安装本地CUDA。这里我选择安装多个版本的CUDA Toolkit,通过使用统一的cuda软链接来选择不同的CUDA版本。

下载CUDA Toolkit

前往CUDA Toolkit下载页面下载适用于Linux的CUDA Toolkit,这里安装类型选择runfile下载。

CUDA Toolkit下载页面

安装CUDA Toolkit

1
chmod +x cuda_12.4.0_550.54.15_linux.run
1
./cuda_12.4.0_550.54.15_linux.run --silent --toolkit --installpath=$HOME/.local/cuda-12.4

创建cuda软链接

1
ln -s $HOME/.local/cuda-12.4 $HOME/.local/cuda

覆盖已经存在的软链接。

1
ln -sfn $HOME/.local/cuda-12.4 $HOME/.local/cuda

配置环境变量

将以下内容添加到你的~/.bashrc文件中:

1
2
3
export CUDA_HOME=$HOME/.local/cuda
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH

验证安装

安装完成后,运行nvcc --version命令验证CUDA Toolkit是否安装成功。