pytorch实战笔记1

本文介绍了使用PyTorch实现线性回归的基本步骤,包括构建模型、设置参数、使用GPU加速训练过程,并讲解了tensor的不同形式。此外,还提到了hub模块的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线性回归

1.1 常用库

nn:

import torch.nn as nn

np:

import numpy as np

1.2 代码

import torch
import torch.nn as nn

# 模型结构

class LinearRegressionModel(nn.Module):
    def __init__(self, input_dim, out_dim):
        super(LinearRegressionModel, self).__init__()
        
        # 需要用到哪些层,就改成哪些
        
        self.linear = nn.Linear(input_dim, output_dim)
    
    def forward(self, x):
        out = self.linear(x)
        return out
input_dim = 1
output_dim = 1

model = LinearRegressionModel(input_dim, output_dim)
# 指定好参数和损失函数

epochs = 1000 # 回合数
learning_rate = 0.01 # 学习率
optimizer = torch.optim.SGD(model.parameters(), lr = learning_rate) # 优化器
criterion = nn.MSELoss()  # 损失函数
# 训练模型

for epoch in range(epochs):
    epoch += 1
    
    # 注意转换成tensor
    inputs = torch.from_numpy(x_train) # 将训练图像转换为tensor
    labels = torch.from_numpy(y_train) # 将图像标签转换为tensor
    
    # 每一次迭代的梯度要清零
    optimizer.zero_grad()
    
    # 前向传播
    outputs = model(inputs)
    
    # 计算损失
    loss = criterion(outputs, labels)
    
    # 反向传播
    loss.backward()
    
    # 更新权重参数
    optimizer.step()
    if epoch % 50 == 0:
        print('epoch {}, loss {}'.format(epoch, loss.item()))
# 模型的保存
torch.save(model.state_dict(), 'model.pkl')

# 模型的读取
model.load_state_dict(torch.load('model.pkl'))

1.3 参数设置

  • optimizer:
    基本:SGD
  • 损失函数
    分类:交叉熵
    回归:MSE

1.4 使用GPU进行训练

# 只需要把数据和模型传入到cuda里面就行了

import torch
import torch.nn as nn
import numpy as np

class LinearRegressionModel(nn.Module):
    def __init__(self, input_dim, output_dim):
        super(LinearRegressionModel, self).__init__()
        self.linear = nn.Linear(input_dim, output_dim)
    
    def forward(self, x):
        out = self.linear(x)
        return out

input_dim = 1
output_dim = 1

model = LinearRegressionModel(input_dim, output_dim)

# device:使用CPU还是GPU
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model.to(device)

criterion = nn.MSELoss()

learnig_rate = 0.01

optimizer = torch.optim.SGD(model.parameters(), lr = learning_rate)

epochs = 1000

for epoch in range(epochs):
    epoch += 1
    inputs = torch.from_numpy(x_train).to(device)
    labels = torch.from_numpy(y_train).to(device)
    
    optimizer.zero_grad()
    
    outputs = model(inputs)
    
    loss = criterion(outputs, labels)
    
    loss.backward()
    
    optimizer.step()
    
    if epoch % 50 == 0:
        print('epoch {}, loss {}'.format(epoch, loss.item()))

1.5 tensor常见形式

  • 0:scalar 数值
  • 1:vector 向量
  • 2:matrix 矩阵
  • 3 n-dimensional tensor n维张量

1.6 hub模块

  • github: https://github.com/pytorch/hub
  • 模型:https://pytorch.org/hub/research-models
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值