pytorch 快速入门
所属分类 AI
浏览量 12
PyTorch 是一个基于 Python 的科学计算库,专为深度学习设计
从张量操作、自动求导到模型构建,快速入门:
1. 张量基础
import torch
# 创建张量
x = torch.tensor([1, 2, 3])
y = torch.zeros(3, 4)
z = torch.randn(2, 3) # 标准正态分布随机数
# 张量运算
a = x + y # 广播机制
b = torch.matmul(z, z.t()) # 矩阵乘法
# 与NumPy互转
import numpy as np
arr = np.array([4, 5, 6])
tensor = torch.from_numpy(arr)
2. 自动求导
x = torch.tensor(2.0, requires_grad=True)
y = x**2 + 3*x + 1
# 反向传播计算梯度
y.backward()
print(x.grad) # 输出:7.0 (导数2x+3在x=2处的值)
3. 构建神经网络
import torch.nn as nn
import torch.optim as optim
# 定义简单的全连接网络
class SimpleNet(nn.Module):
def __init__(self):
super(SimpleNet, self).__init__()
self.fc1 = nn.Linear(10, 20) # 输入10维,输出20维
self.relu = nn.ReLU()
self.fc2 = nn.Linear(20, 2) # 二分类问题
def forward(self, x):
x = self.fc1(x)
x = self.relu(x)
x = self.fc2(x)
return x
# 初始化模型、损失函数和优化器
model = SimpleNet()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
4. 训练流程
# 模拟训练数据
inputs = torch.randn(5, 10) # 5个样本,每个10维特征
labels = torch.randint(0, 2, (5,)) # 随机标签0或1
# 训练循环
for epoch in range(100):
# 前向传播
outputs = model(inputs)
loss = criterion(outputs, labels)
# 反向传播和优化
optimizer.zero_grad() # 梯度清零
loss.backward() # 计算梯度
optimizer.step() # 更新参数
if (epoch+1) % 10 == 0:
print(f'Epoch {epoch+1}, Loss: {loss.item():.4f}')
5. 保存和加载模型
# 保存模型
torch.save(model.state_dict(), 'model.pth')
# 加载模型
loaded_model = SimpleNet()
loaded_model.load_state_dict(torch.load('model.pth'))
loaded_model.eval() # 设置为评估模式
6. 使用 GPU 加速
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device) # 将模型移到GPU
inputs = inputs.to(device) # 将数据移到GPU
上一篇
下一篇
python字节码缓存 .pyc 文件
python 项目目录结构
可发布Python包 项目示例
numpy 与 pytorch
向GPT提问的技巧
中国家庭存款八个等级