温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何用pytorch建模型

发布时间:2026-11-05 08:09:55 来源:亿速云 阅读:103 作者:小樊 栏目:编程语言

下面我用由浅入深的方式,给你讲 如何用 PyTorch 建模型,从最基础的写法到常见结构,适合初学者到进阶。


一、PyTorch 建模型的核心思路

在 PyTorch 中,建模型通常有两种方式:

  1. 继承 nn.Module(最常用、最推荐)
  2. 直接用 nn.Sequential(简单模型)

二、最基础的模型(继承 nn.Module)

1️⃣ 定义一个简单全连接网络

import torch
import torch.nn as nn

class MyModel(nn.Module):
    def __init__(self):
        super(MyModel, self).__init__()
        self.fc1 = nn.Linear(784, 128)
        self.relu = nn.ReLU()
        self.fc2 = nn.Linear(128, 10)

    def forward(self, x):
        x = self.fc1(x)
        x = self.relu(x)
        x = self.fc2(x)
        return x

2️⃣ 使用模型

model = MyModel()
x = torch.randn(32, 784)  # batch_size=32
output = model(x)
print(output.shape)  # [32, 10]

✅ 核心点

  • __init__:定义层
  • forward:定义前向传播
  • 不需要写反向传播(PyTorch 自动求导)

三、用 nn.Sequential 快速建模型(适合简单网络)

model = nn.Sequential(
    nn.Linear(784, 128),
    nn.ReLU(),
    nn.Linear(128, 10)
)

x = torch.randn(32, 784)
output = model(x)

✅ 优点:代码少
❌ 缺点:不灵活(不适合复杂结构)


四、常见神经网络结构示例

1️⃣ CNN(卷积神经网络)

class CNN(nn.Module):
    def __init__(self):
        super(CNN, self).__init__()
        self.conv = nn.Sequential(
            nn.Conv2d(1, 16, 3, 1, 1),
            nn.ReLU(),
            nn.MaxPool2d(2)
        )
        self.fc = nn.Linear(16 * 14 * 14, 10)

    def forward(self, x):
        x = self.conv(x)
        x = x.view(x.size(0), -1)
        x = self.fc(x)
        return x

2️⃣ RNN / LSTM

class RNNModel(nn.Module):
    def __init__(self, input_size, hidden_size, num_classes):
        super(RNNModel, self).__init__()
        self.lstm = nn.LSTM(input_size, hidden_size, batch_first=True)
        self.fc = nn.Linear(hidden_size, num_classes)

    def forward(self, x):
        out, _ = self.lstm(x)
        out = self.fc(out[:, -1, :])
        return out

五、模型训练的基本流程

criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)

for epoch in range(10):
    for x, y in dataloader:
        optimizer.zero_grad()
        out = model(x)
        loss = criterion(out, y)
        loss.backward()
        optimizer.step()

六、模型保存与加载

保存

torch.save(model.state_dict(), "model.pth")

加载

model = MyModel()
model.load_state_dict(torch.load("model.pth"))
model.eval()

七、推荐学习路径

  1. nn.Module ✅
  2. 全连接 → CNN → RNN
  3. DataLoader
  4. 训练 / 验证 / 测试
  5. GPU(model.cuda())

如果你愿意,我可以:

  • ✅ 给你完整可运行示例
  • ✅ 按你的任务(分类 / 回归 / 图像 / 文本)写模型
  • ✅ 对比 TensorFlow / Keras

你现在是 刚入门 还是 已有基础?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手