小程序平台推广方案,优化方案生物必修一,免费申请网站空间及域名,桃城网站建设文章目录 前言一、导入库二、数据处理三、构建模型四、迭代训练五、结果预测总结 前言
以线性回归为例#xff0c;记录Pytorch的基本使用方法。 一、导入库
import numpy as np
import matplotlib.pyplot as plt
import torch
from torch.autograd import Variable # 定义求… 文章目录 前言一、导入库二、数据处理三、构建模型四、迭代训练五、结果预测总结 前言
以线性回归为例记录Pytorch的基本使用方法。 一、导入库
import numpy as np
import matplotlib.pyplot as plt
import torch
from torch.autograd import Variable # 定义求导变量
from torch import nn, optim # 定义网络模型和优化器二、数据处理
将数据类型转为tensor第一维度变为batch_size
# 构建数据
x np.random.rand(100)
noise np.random.normal(0, 0.01, x.shape)
y 0.1 * x 0.2 noise
# 数据处理
x_data torch.FloatTensor(x.reshape(-1, 1))
y_data torch.FloatTensor(y.reshape(-1, 1))
inputs Variable(x_data)
target Variable(y_data)三、构建模型
1、继承nn.Module定义一个线性回归模型。在__init__中定义连接层定义前向传播的方法 2、实例化模型定义损失函数与优化器
# 继承模型
class LinearRegression(nn.Module):def __init__(self):super().__init__()self.fc nn.Linear(1, 1)def forward(self, x):out self.fc(x)return out
# 定义模型
print(模型参数)
model LinearRegression()
mse_loss nn.MSELoss()
optimizer optim.SGD(model.parameters(), lr0.1)
for name, param in model.named_parameters():print({}:{}.format(name, param))四、迭代训练
1、梯度清零optimizer.zero_grad() 2、反向传播计算梯度值loss.backward() 3、执行参数更新optimizer.step() 循环迭代定期输出损失值
print(损失值)
for i in range(1001):out model.forward(inputs)loss mse_loss(out, target)optimizer.zero_grad()loss.backward()optimizer.step()if i % 200 0:print(i, loss.item())五、结果预测
绘制样本的散点图与预测值的折线图
print(结果预测)
y_pred model(x_data)
plt.plot(x, y, b.)
plt.plot(x, y_pred.data.numpy(), r-)
plt.show()总结
使用Pytorch进行训练主要的三步 1数据处理将数据维度转换为(batch, *)数据类型转换为可训练的tensor; 2构建模型继承nn.Module定义连接层与运算方法实例化定义损失函数与优化器 3迭代训练循环迭代依次执行梯度清零、梯度计算、参数更新。