深度学习_原理和进阶_PyTorch入门(1)
🧠 PyTorch 入门概览
📘 一、PyTorch 是什么?
PyTorch 是一个由 Facebook(Meta)AI 研究院 开发的 深度学习框架,用于构建、训练和部署神经网络。
它提供了:
-
灵活的 张量计算(Tensor) 功能;
-
自动计算梯度的 自动微分(Autograd) 系统;
-
高效的 GPU 加速;
-
以及丰富的 神经网络模块(torch.nn)。
一句话总结👇
✅ PyTorch = Python + GPU加速 + 自动求导 + 神经网络库
⚙️ 二、PyTorch 的核心组成
| 模块 | 作用 | 示例 |
|---|---|---|
torch.Tensor | 类似 NumPy 的张量对象,支持 GPU 运算 | x = torch.randn(2,3) |
torch.autograd | 自动求导系统,实现反向传播 | x.requires_grad_(True) |
torch.nn | 神经网络层与损失函数模块 | nn.Linear(10,5) |
torch.optim | 优化器模块(SGD、Adam等) | optimizer = torch.optim.Adam(model.parameters()) |
torch.utils.data | 数据加载与批处理 | DataLoader(dataset, batch_size=32) |
🚀 三、PyTorch 能做什么?
PyTorch 能做的事情非常广,从入门的机器学习模型,到前沿的人工智能研究都有覆盖。
| 应用方向 | 能做的事 | 典型例子 |
|---|---|---|
| 🔹 深度学习基础 | 构建、训练神经网络(CNN、RNN、MLP) | 手写数字识别(MNIST) |
| 🔹 计算机视觉(CV) | 图像分类、目标检测、语义分割 | ResNet、YOLO、Mask R-CNN |
| 🔹 自然语言处理(NLP) | 文本分类、机器翻译、文本生成 | Transformer、BERT、GPT |
| 🔹 生成模型(AI绘画) | 图像生成、风格迁移、扩散模型 | Stable Diffusion |
| 🔹 强化学习(RL) | 智能体训练与环境交互 | DQN、PPO、AlphaZero |
| 🔹 科学计算/仿真 | 物理建模、生物信息学、图学习 | Graph Neural Network (GNN) |
| 🔹 部署与推理 | 模型导出、移动端/服务器部署 | TorchScript, ONNX |
🧩 四、PyTorch 的优势
| 特点 | 说明 |
|---|---|
| 🔥 动态图机制(Dynamic Graph) | 即时执行、调试方便(像写普通Python一样) |
| ⚡ GPU/TPU 加速 | 自动切换设备,轻松使用 CUDA |
| 🧮 自动求导系统 | 不必手写反向传播,autograd 自动计算梯度 |
| 🧱 模块化神经网络结构 | 使用 torch.nn.Module 自定义模型层 |
| 🌍 强大的社区与生态 | HuggingFace、TorchVision、TorchText、Lightning等支持 |
🧠 五、典型代码结构(示例)
import torch
import torch.nn as nn
import torch.optim as optim
# 1. 定义模型
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc = nn.Linear(2, 1)
def forward(self, x):
return torch.sigmoid(self.fc(x))
model = Net()
# 2. 定义损失与优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.1)
# 3. 前向传播 + 反向传播
x = torch.tensor([[1.0, 2.0]])
y_true = torch.tensor([[1.0]])
y_pred = model(x)
loss = criterion(y_pred, y_true)
loss.backward() # 自动计算梯度
optimizer.step() # 更新参数
这段代码就是一个 最简神经网络的完整训练循环,展示了 PyTorch 的核心特性:
➡️ 张量计算 → 前向传播 → 自动求导 → 参数更新。
🌐 六、PyTorch 的应用场景
| 场景 | 说明 | 案例 |
|---|---|---|
| 🎨 图像识别 | 自动识别图像中的物体 | ResNet、YOLOv8 |
| 💬 文本理解 | 聊天机器人、文本生成 | GPT、ChatGPT、BERT |
| 🎵 声音识别 | 语音转文字、音频分析 | Whisper、Wav2Vec |
| 🤖 智能控制 | 游戏AI、机器人路径规划 | 强化学习训练环境 |
| 🧬 科学研究 | 分子建模、基因分析 | AlphaFold、GNN模型 |
| 🧠 教育/实验 | 教学演示、论文复现 | 深度学习课程实验 |
当然可以,小飞 👍
我来帮你把这部分内容重新排版成清晰、专业、可直接放入教学或笔记中的 Markdown 格式版本,结构更紧凑、代码区分更明显👇
🧠 Lesson 7:PyTorch 基础语法与张量创建
📘 一、什么是张量(Tensor)
张量(Tensor) 是 PyTorch 中的基本数据结构,可以理解为 多维数组。
| 维度 | 名称 | 示例 |
|---|---|---|
| 0维 | 标量(Scalar) | 3.14 |
| 1维 | 向量(Vector) | [1, 2, 3] |
| 2维 | 矩阵(Matrix) | [[1, 2], [3, 4]] |
| 3维及以上 | 高阶张量(Tensor) | [[[1, 2], [3, 4]], [[5, 6], [7, 8]]] |
⚙️ 二、张量的创建方式
1️⃣ 使用 torch.tensor() 根据数据创建张量
import torch
# 标量(0维)
scalar = torch.tensor(3.14159)
print(f"scalar 标量张量:{scalar}, 维度:{scalar.dim()}")
# 向量(1维)
vector = torch.tensor([1, 2, 3, 4])
print(f"vector 向量张量:{vector}, 维度:{vector.dim()}")
# 矩阵(2维)
matrix = torch.tensor([[1, 2, 3], [4, 5, 6]])
print(f"matrix 矩阵张量:\n{matrix}\n维度:{matrix.dim()}")
# 三维张量(3维)
tensor_3d = torch.tensor([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(f"tensor_3d 三维张量:\n{tensor_3d}\n维度:{tensor_3d.dim()}")
---------------1️⃣ 使用 torch.tensor() 根据数据创建张量---------------
scalar标量张量:3.141590118408203,维度:0
vector向量张量:tensor([1, 2, 3, 4]),维度:1
matrix矩阵张量:tensor([[1, 2, 3],
[4, 5, 6]]),维度:2
tensor_3d 三维张量:tensor([[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]]]),维度:3
2️⃣ 使用 torch.Tensor() 根据形状创建张量
⚠️ 默认类型为
torch.float32,内容是未初始化的随机值。
# 二维矩阵
matrix_2 = torch.Tensor(2, 3)
print(f"matrix_2 矩阵张量:\n{matrix_2}\n维度:{matrix_2.dim()}")
# 三维张量
tensor_3d1 = torch.Tensor(2, 2, 2)
print(f"tensor_3d1 三维张量:\n{tensor_3d1}\n维度:{tensor_3d1.dim()}")
-------------- 使用 torch.Tensor() 根据形状创建张量--------------------
matrix_2矩阵张量:
tensor([[1.5795e-18, 6.2778e-43, 1.5795e-18],
[6.2778e-43, 1.6578e-18, 6.2778e-43]])
维度:2
tensor_3d1 3维张量:
tensor([[[1.5795e-18, 6.2778e-43],
[1.5795e-18, 6.2778e-43]],
[[1.6578e-18, 6.2778e-43],
[2.1019e-44, 0.0000e+00]]])
维度:3
3️⃣ 使用具体类型函数创建张量
print("----------- 根据不同类型创建张量 -----------")
# 标量(Double 类型)
scalar_3 = torch.DoubleTensor([3.14])
print(f"scalar_3 标量张量:{scalar_3}, 维度:{scalar_3.dim()}")
# 矩阵(Int 类型)
matrix_3 = torch.IntTensor(2, 3)
print(f"matrix_3 矩阵张量:\n{matrix_3}\n维度:{matrix_3.dim()}")
# 三维张量(Int 类型)
tensor_3d3 = torch.IntTensor(2, 2, 2)
print(f"tensor_3d3 三维张量:\n{tensor_3d3}\n维度:{tensor_3d3.dim()}")
-----------3️⃣ 使用具体类型函数创建张量---------------
scalar_3 标量张量:tensor([3.1400], dtype=torch.float64),维度:1
matrix_3 矩阵张量:tensor([[568923984, 448, 568923968],
[ 448, 569681520, 448]], dtype=torch.int32),维度:2
tensor_3d3 三维张量:tensor([[[568923984, 448],
[568923968, 448]],
[[569681520, 448],
[ 15, 0]]], dtype=torch.int32),维度:3
指定类型创建张量 (不同数据类型)
| 数据类型构造器 | 类型说明 | 示例 |
|---|---|---|
torch.FloatTensor | 32位浮点型(默认浮点类型) | 浮点数据 |
torch.DoubleTensor | 64位浮点型 | 高精度浮点 |
torch.HalfTensor | 16位浮点型 | 半精度浮点 |
torch.IntTensor | 32位整型 | 常用整型 |
torch.LongTensor | 64位整型(默认整型) | 大整数 |
torch.ShortTensor | 16位整型 | 小范围整数 |
torch.ByteTensor | 无符号 8位整型 | 0–255 |
torch.BoolTensor | 布尔类型 | True / False |
✅ 八、总结一句话
PyTorch 是一个面向研究与生产的深度学习框架,能让你像写普通 Python 一样轻松构建和训练神经网络。
喜欢的同学点个关注吧,及时推送一起学习呀~
更多推荐

所有评论(0)