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()))  # 使用模型来预测值

运行结果

posted @ 2021-09-06 21:39  里列昂遗失的记事本  阅读(326)  评论(0编辑  收藏  举报