PyTorch创建简单的逻辑回归模型(LogisticRegression)
import torch
import torch.nn.functional as F # 从torch引入激活函数
x_data = torch.tensor([[1.0], [2.0], [3.0]]).cuda() # 将数据放在GPU上
y_data = torch.tensor([[0.0], [0.0], [1.0]]).cuda()
class LogisticRegressionModel(torch.nn.Module): # 继承torch.nn.Module
def __init__(self): # 初始化类
super(LogisticRegressionModel, self).__init__() # 继承父类
self.linear = torch.nn.Linear(1, 1) # 创建线性层
def forward(self, x): # 定义正向传播
y_pred = F.sigmoid(self.linear(x)) # 将线性层输出的结果经过sigmoid激活函数
return y_pred
model = LogisticRegressionModel().cuda() # 实例化对象为model然后将model的计算图放在GPU上
criterion = torch.nn.BCELoss(size_average=False).cuda() # 创建损失函数,BCELoss为二分类的损失函数,并设置size_average=False不平均损失
optimizer = torch.optim.SGD(model.parameters(), lr=1e-2) # 创建优化器SGD来优化model的parameters,并设置learning_rate=1e-2
for epoch in range(100): # 进行100轮训练
y_pred = model(x_data) # 通过model的正向传播得到y_pred
loss = criterion(y_pred, y_data) # 将预测值与真实值进行计算损失函数
print(epoch + 1, loss.item()) # 输出轮数和损失函数
optimizer.zero_grad() # 进行反向传播前将梯度置0
loss.backward() # 损失函数进行反向传播来计算梯度
optimizer.step() # 根据计算的梯度来更新参数权重
print(model(torch.tensor([[4.0]]).cuda())) # 使用模型来预测值
运行结果