首页  

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提问的技巧

中国家庭存款八个等级