1、导入torch和 torch.nn
首先,我们需要使用以下命令导入Pytorch库:
import torch import torch.nn as nn
2、定义变量
定义所有图层和批次大小以开始执行神经网络,如下所示:
# 分别定义输入大小、隐藏层大小、输出大小和批量大小 n_in, n_h, n_out, batch_size = 10, 5, 1, 10
3、输入数据
作为神经网络包括输入数据的组合来获取相应的输出数据,例如:
# Create dummy input and target tensors (data) x = torch.randn(batch_size, n_in) y = torch.tensor([[1.0], [0.0], [0.0], [1.0], [1.0], [1.0], [0.0], [0.0], [1.0], [1.0]])
4、创建模型
在内置功能的帮助下创建顺序模型。 使用以下代码行,创建顺序模型:
# Create a model model = nn.Sequential(nn.Linear(n_in, n_h), nn.ReLU(), nn.Linear(n_h, n_out), nn.Sigmoid())
5、构建loss函数
利用梯度下降优化器构建损失函数,如下图所示:
Construct the loss function criterion = torch.nn.MSELoss() # 构建优化器(本例中为随机梯度下降) optimizer = torch.optim.SGD(model.parameters(), lr = 0.01)
6、梯度下降模型
使用给定的代码行实现迭代循环的梯度下降模型
# 训练循环(50个epochs) for epoch in range(50): # 前向传播:通过传递 x 到模型计算预测的 y y_pred = model(x) # 计算并打印损失 loss = criterion(y_pred, y) print('Epoch:', epoch, 'Loss:', loss.item()) # 清零梯度,进行反向传播,并更新权重 optimizer.zero_grad() # 清零之前的梯度 loss.backward() # 反向传播:计算梯度 optimizer.step() # 更新模型参数
7、完整代码
使用梯度下降(代码中是随机梯度下降)来最小化损失,通常用于监督学习任务中的模型训练。
import torch import torch.nn as nn import torch.optim as optim # 定义一个简单的模型(例如,单层神经网络) class SimpleNN(nn.Module): def __init__(self): super(SimpleNN, self).__init__() # 一个简单的线性层,输入大小为 2,输出大小为 1 self.fc = nn.Linear(2, 1) def forward(self, x): return self.fc(x) # 示例数据集(输入和目标) # 示例特征(2D) x = torch.tensor([[1.0, 2.0], [2.0, 3.0], [3.0, 4.0], [4.0, 5.0]]) y = torch.tensor([[5.0], [7.0], [9.0], [11.0]]) # 示例目标(1D) # 初始化模型、损失函数和优化器 model = SimpleNN() criterion = nn.MSELoss() # 均方误差损失函数 optimizer = optim.SGD(model.parameters(), lr=0.01) # 随机梯度下降优化器 # 训练循环(50个epochs) for epoch in range(50): # 前向传播:通过传递 x 到模型计算预测的 y y_pred = model(x) # 计算并打印损失 loss = criterion(y_pred, y) print('Epoch:', epoch, 'Loss:', loss.item()) # 清零梯度,进行反向传播,并更新权重 optimizer.zero_grad() # 清零之前的梯度 loss.backward() # 反向传播:计算梯度 optimizer.step() # 更新模型参数