Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pub1 #114

Closed
wants to merge 3 commits into from
Closed

Pub1 #114

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions source/第一章/1.1 PyTorch简介.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,9 @@ PyTorch是由Meta AI(Facebook)人工智能研究小组开发的一种基于Lua

**“All in PyTorch”**,对于PyTorch的发展我们只能用一句话来概况了,PyTorch自从推出就获得巨大的关注并受到了很多人的喜欢,而最直观的莫过于下面数据所表现的简明直了。

下图来自[Paper with code](https://paperswithcode.com/trends)网站,**颜色面积代表使用该框架的论文公开代码库的数量**我们可以发现截至2021年6月,PyTorch的代码实现已经是TensorFlow实现的4倍,我们也可以看红色部分的PyTorch正在取代他的老大哥称霸学术圈,PyTorch会借助ONNX所带来的落地能力在工业界逐渐走向主导地位。
下图来自[Paper with code](https://paperswithcode.com/trends)网站,**颜色面积代表使用该框架的论文公开代码库的数量**我们可以发现截至2024年12月,PyTorch的代码实现已经是TensorFlow实现的29.5倍,我们也可以看红色部分的PyTorch正在取代他的老大哥称霸学术圈,PyTorch会借助ONNX所带来的落地能力在工业界逐渐走向主导地位。

总的来说,我们必须承认到现在为止PyTorch 1.x还是有不如别的框架的地方,但是我们相信PyTorch 2.x版本会给我们带来更大的惊喜。

![框架对比图](figures/main_compare.png)
![框架对比图](figures/pytorch_2025.png)

## 1.1.2 PyTorch的优势
+ **更加简洁**,相比于其他的框架,PyTorch的框架更加简洁,易于理解。PyTorch的设计追求最少的封装,避免重复造轮子。
Expand Down
30 changes: 16 additions & 14 deletions source/第一章/1.2 PyTorch的安装.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,33 +20,30 @@ PyTorch的安装是我们学习PyTorch的第一步,也是经常出错的一步
### Step 2:检验是否安装成功
在开始页找到Anaconda Prompt,一般在Anaconda3的文件夹下,( Linux在终端下就行了)

![prompt](figures/prompt.png)
![prompt](figures/anaconda_windows.png)

### Step 3:创建虚拟环境

Linux在终端(`Ctrl`+`Alt`+`T`)进行,Windows在`Anaconda Prompt`进行

#### 查看现存虚拟环境
查看已经安装好的虚拟环境,可以看到我们这里已经有两个环境存在了
查看已经安装好的虚拟环境,可以看到默认有一个base环境

```bash
conda env list
```

![env_list](figures/env_list.png)
![env_list](figures/conda_env_list.png)

#### 创建虚拟环境
在深度学习和机器学习中,我们经常会创建不同版本的虚拟环境来满足我们的一些需求。下面我们介绍创建虚拟环境的命令。
```bash
conda create -n env_name python==version
# 注:将env_name 替换成你的环境的名称,version替换成对应的版本号,eg:3.8
conda create -n pytorch2.6 python=3.10 -y
```

![](figures/install.png)
![](figures/anaconda新建环境.png)


****
1. 这里忽略我们的warning,因为我们测试的时候已经安了又卸载一遍了,正常时是不会有warning的。
2. 在选择Python版本时,不要选择太高,建议选择3.6-3.8,版本过高会导致相关库不适配。

#### 安装包
```bash
Expand Down Expand Up @@ -168,9 +165,8 @@ vi .condarc

我们可以通过在`cmd/terminal中`输入`nvidia-smi`(Linux和Win命令一样)、使用NVIDIA控制面板和使用任务管理器查看自己是否有NVIDIA的独立显卡及其型号

![查看GPU](figures/gpu.png)
![windows查看cuda.png](figures/windows查看cuda.png)

![查看显卡](figures/Nvidia.png)



Expand All @@ -197,7 +193,7 @@ vi .condarc
### Step 3:选择命令
我们需要结合自己情况选择命令并复制下来,然后使用conda下载或者pip下载(建议conda安装)

打开`Terminal`,输入`conda activate env_name`(env_name 为你对应的环境名称),切换到对应的环境下面,我们就可以进行PyTorch的安装了。
打开`Anaconda Prompt`,输入`conda activate env_name`(env_name 为你对应的环境名称),切换到对应的环境下面,我们就可以进行PyTorch的安装了。

![](figures/choose_envs.png)

Expand All @@ -222,7 +218,13 @@ vi .condarc

如果我们使用的`Anaconda Prompt`进行下载的话,我们需要先通过`conda activate env_name`,激活我们的虚拟环境中去,再输入命令。

****: 我们需要要把下载指令后面的 -c pytorch 去掉以保证使用清华源下载,否则还是默认从官网下载。
值得一提的是,Conda 已经不再被推荐作为 pytorch
安装的工具了,我们用 pip 来下载
```
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
```

### Step 5:离线下载

#### Windows:
Expand Down Expand Up @@ -254,7 +256,7 @@ import torch
torch.cuda.is_available()
```
```bash
False
Ture
```
这条命令意思是检验是否可以调用cuda,如果我们**安装的是CPU版本的话会返回False,能够调用GPU的会返回True**。一般这个命令不报错的话就证明安装成功。

Expand Down
Binary file added source/第一章/figures/anaconda_windows.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added source/第一章/figures/conda_env_list.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added source/第一章/figures/pytorch_2025.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added source/第一章/figures/pytorch_choose.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added source/第一章/figures/windows查看cuda.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 13 additions & 3 deletions source/第零章/0.1 人工智能简史.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,21 @@

人工智能的第三次浪潮有两个重要的时间节点:2006年和2016年。2006年是深度学习发展史的分水岭。杰弗里辛顿在这一年发表了《一种深度置信网络的快速学习算法》,其他重要的深度学习学术文章也在这一年被发布,在基本理论层面取得了若干重大突破。而2016年3月,谷歌DeepMind研发的AlphaGo在围棋人机大战中击败韩国职业九段棋手李世乭,“人工智能”一词正式进入普通民众的视野并被逐渐熟知。至此,人工智能正式迈向了从“科研领域的应用型工具”到“实用性,功能性工具”的转变,人工智能有了新的研究方向和研究模式,即从过去的学术主导型研究逐渐走向了商业主导型研究。随着人类社会对智能化工具的不断追求和探索,人工智能的发展迎来了全新的时代。

### 1.1.4 总结
### 1.1.4 第四次浪潮

![](figures/AI.jpg)
2020年前后,随着深度学习技术的成熟和大规模预训练模型(Large Language Models, LLM)的突破,人工智能发展进入以生成式AI为核心的第四次浪潮。这一阶段的核心标志是Transformer架构的广泛应用,以及以ChatGPT为代表的通用型对话系统在自然语言理解、生成和逻辑推理能力上的飞跃式提升。

上图是对人工智能发展中经历的三次浪潮和两次寒冬的形象总结。除此之外,有观点认为,深度学习算法带来的“技术红利”,将支撑我们再发展5~10年时间,随后就会遇到瓶颈。人工智能不是一个简单的从1到100进步的过程,它往往趋向于两个极端:要么90分以上,其它的都是10分以下。目前,人工智能急需寻找到一个“技术奇点”,让人工智能迅速发展到通用人工智能甚至是超级人工智能的水平。否则,在人工智能研究商业化的今天,无法从中获利的投资人们将快速撤资退场,人工智能或将进入下一个寒冬。
此次浪潮的起点可追溯至2017年谷歌提出的Transformer模型,其自注意力机制(Self-Attention)解决了传统循环神经网络(RNN)处理长序列数据的效率瓶颈。2020年,OpenAI发布1750亿参数的GPT-3模型,首次展现了大规模预训练模型在零样本学习(Zero-Shot Learning)和小样本学习(Few-Shot Learning)中的潜力。2022年11月,基于GPT-3.5的ChatGPT正式向公众开放,其通过人类反馈强化学习(RLHF)技术实现了与人类意图对齐的对话能力,上线两个月用户突破1亿,成为历史上增长最快的消费级应用。2023年3月,GPT-4的发布进一步突破多模态能力边界,将文本、图像、代码的生成与理解整合至统一框架。

第四次浪潮的本质是人工智能从“专用工具”向“通用助手”的范式转变。基于自监督学习的预训练技术使得模型能够通过海量数据(如数万亿单词的文本库)自主构建对世界的认知体系,而指令微调(Instruction Tuning)和价值观对齐技术则让人工智能的输出更符合人类伦理与社会规范。此阶段的技术突破显著降低了AI应用门槛,编程、写作、教育、法律等领域的生产力工具开始全面智能化重构,人类与机器的交互模式从“命令式”转变为“协作式”。

然而,此次浪潮也面临前所未有的挑战。千亿级参数模型对算力的需求引发全球GPU资源争夺战,训练成本的高企导致技术垄断风险;模型可能产生包含偏见或事实错误的“幻觉”(Hallucination)输出,引发对信息可信度的担忧;以开源社区(如Meta的LLaMA)与闭源商业公司(如OpenAI)的路线之争,更折射出技术伦理与治理的复杂性。当前,第四次浪潮仍在持续推进中,其最终走向将取决于技术突破、社会接受度与监管框架的多方博弈。

### 1.1.5 总结

![](figures/AI_1.1.5.png)

上图是对人工智能发展中经历的四次浪潮和两次寒冬的形象总结。除此之外,有观点认为,深度学习算法带来的“技术红利”,将支撑我们再发展5~10年时间,随后就会遇到瓶颈。人工智能不是一个简单的从1到100进步的过程,它往往趋向于两个极端:要么90分以上,其它的都是10分以下。人工智能急需寻找到一个“技术奇点”,让人工智能迅速发展到通用人工智能甚至是超级人工智能的水平。否则,在人工智能研究商业化的今天,无法从中获利的投资人们将快速撤资退场,人工智能或将进入下一个寒冬。而如今我们无疑正处于这个“技术奇点”前沿。

## 1.2 DL,ML,AI三者之间的关系

Expand Down
145 changes: 143 additions & 2 deletions source/第零章/0.3 常用包的学习.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,145 @@
# 常用包的学习
## Numpy

## NumPy

**简介:**
NumPy 是 Python 的基础科学计算包,提供了高性能的 N 维数组对象(`ndarray`)和大量用于数组操作的函数。它是很多其他数据分析包(例如 pandas 和 scikit-learn)的基础。

**学习重点:**

- **数组创建:**
- 从列表创建:`np.array([1, 2, 3])`
- 特殊数组:`np.zeros((3, 4))`、`np.ones((2, 5))`、`np.eye(4)`、`np.arange(0, 10, 2)`、`np.linspace(0, 1, 5)`

- **数组操作:**
- 形状操作:`array.shape`、`np.reshape()`、`np.transpose()`
- 切片和索引:类似 Python 列表,但支持多维索引
- 广播机制:在不同形状的数组间进行运算

- **数学运算:**
- 基本运算:加减乘除(直接对数组操作)
- 通用函数(ufuncs):如 `np.sin()`、`np.log()`、`np.exp()` 等
- 矩阵运算:`np.dot()`、`np.matmul()`、`@` 操作符

**示例代码:**

```python
import numpy as np

# 创建数组
a = np.array([1, 2, 3])
b = np.arange(0, 10, 2) # [0, 2, 4, 6, 8]

# 数组的基本运算
c = a * 2
d = np.sin(a)

# 数组的形状操作
matrix = np.arange(12).reshape(3, 4)
transposed = matrix.T

print("数组 a:", a)
print("数组 b:", b)
print("数组 c (a*2):", c)
print("数组 d (sin(a)):", d)
print("原始矩阵:\n", matrix)
print("转置矩阵:\n", transposed)
```

---

## pandas
## matplotlib

**简介:**
pandas 是基于 NumPy 构建的数据分析库,主要提供了两种核心数据结构:`Series`(一维数据)和 `DataFrame`(二维数据表)。它极大地方便了数据读取、清洗、变换和分析。

**学习重点:**

- **数据结构:**
- **Series:** 类似于带标签的一维数组
- **DataFrame:** 表格数据结构,既有行索引也有列标签

- **数据读写:**
- 从 CSV、Excel、SQL 等文件或数据库中读取数据:`pd.read_csv()`, `pd.read_excel()`
- 保存数据:`DataFrame.to_csv()`, `DataFrame.to_excel()`

- **数据操作:**
- 选择与过滤:通过标签(`.loc`)或位置(`.iloc`)索引
- 数据清洗:处理缺失值(`dropna()`, `fillna()`)、重复值
- 数据变换:排序(`sort_values()`)、重设索引(`reset_index()`)
- 数据聚合:`groupby()`、`pivot_table()`、`merge()`、`join()`

**示例代码:**

```python
import pandas as pd

# 创建 DataFrame
data = {
'姓名': ['Alice', 'Bob', 'Charlie', 'David'],
'年龄': [25, 30, 35, 40],
'城市': ['北京', '上海', '广州', '深圳']
}
df = pd.DataFrame(data)

# 查看数据
print("DataFrame 内容:")
print(df)

# 筛选年龄大于30的数据
df_filtered = df[df['年龄'] > 30]
print("\n年龄大于30的人:")
print(df_filtered)

# 分组聚合:按城市统计平均年龄
df_grouped = df.groupby('城市')['年龄'].mean().reset_index()
print("\n按城市计算平均年龄:")
print(df_grouped)
```

---

## matplotlib

**简介:**
matplotlib 是 Python 最常用的数据可视化库,特别是其 `pyplot` 接口,能够方便地创建各种图表(折线图、散点图、直方图、条形图等)。

**学习重点:**

- **基本绘图:**
- 使用 `plt.plot()` 绘制折线图
- `plt.scatter()` 绘制散点图
- `plt.bar()` 绘制条形图
- `plt.hist()` 绘制直方图

- **图表定制:**
- 添加标题:`plt.title()`
- 添加坐标轴标签:`plt.xlabel()`、`plt.ylabel()`
- 添加图例:`plt.legend()`
- 自定义颜色、线型、标记等

- **显示与保存图表:**
- 显示图表:`plt.show()`
- 保存图表:`plt.savefig('filename.png')`

**示例代码:**

```python
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 绘制折线图
plt.figure(figsize=(8, 4))
plt.plot(x, y, label='sin', color='blue', linestyle='-', marker='o', markersize=4)
plt.title('sin')
plt.xlabel('X ')
plt.ylabel('Y ')
plt.legend()
plt.grid(True)
plt.show()

```
Binary file added source/第零章/figures/AI_1.1.5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading