《PyTorch深度学习实践》06 用PyTorch实现Logistic回归

这篇博客介绍了如何使用PyTorch实现Logistic回归。作者通过创建`LogisticRegressionModel`类,定义了模型结构,并使用BCELoss作为损失函数,SGD作为优化器进行训练。在100个epoch的训练后,展示了模型的权重和偏置,并给出了预测示例。
摘要由CSDN通过智能技术生成

1. 说明

本系列博客记录B站课程《PyTorch深度学习实践》的实践代码课程链接请点我

2. Pytorch写代码的一般逻辑在这里插入图片描述

3. 代码

# ---------------------------
# @Time     : 2022/4/12 18:17
# @Author   : lcq
# @File     : Logistic_Regression.py
# @Function : PyTorch实现Logistic回归
# ---------------------------

import torch

# x,y是矩阵,3行1列 也就是说总共有3个样本,每个样本只有1个特征
x = torch.tensor([[1.0], [2.0], [3.0]])
y = torch.tensor([[0.0], [0.0], [1.0]])

class LogisticRegressionModel(torch.nn.Module):
    def __init__(self):
        super(LogisticRegressionModel, self).__init__()
        self.linear = torch.nn.Linear(1, 1)

    def forward(self, X):
        y_pred = torch.sigmoid(self.linear(X))
        return y_pred


# Step1: 创建模型
model = LogisticRegressionModel()

# Step2: 创建损失函数和优化器
Loss = torch.nn.BCELoss(size_average=True, reduction=True)
optimizer = torch.optim.SGD(params=model.parameters(), lr=0.01)


# Step3: 训练
for epoch in range(100):
    y_pred = model.forward(x)
    loss = Loss(y_pred, y)
    print(epoch, loss.item())

    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

print('w = ', model.linear.weight.item())
print('b = ', model.linear.bias.item())

x_test = torch.Tensor([[4.0]])
y_test = model(x_test)
print('y_pred = ', y_test.data)


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用PyTorch实现Logistic回归的示例代码: ``` import torch import torch.nn as nn import torch.optim as optim # 定义数据集 x_data = [[1.0], [2.0], [3.0], [4.0], [5.0], [6.0], [7.0], [8.0]] y_data = [[0.], [0.], [0.], [0.], [1.], [1.], [1.], [1.]] # 转化为Tensor x_train = torch.FloatTensor(x_data) y_train = torch.FloatTensor(y_data) # 定义模型 class LogisticRegression(nn.Module): def __init__(self): super(LogisticRegression, self).__init__() self.linear = nn.Linear(1, 1) self.sigmoid = nn.Sigmoid() def forward(self, x): x = self.linear(x) x = self.sigmoid(x) return x # 初始化模型和优化器 model = LogisticRegression() optimizer = optim.SGD(model.parameters(), lr=0.01) # 训练模型 for epoch in range(1000): # 前向传播 hypothesis = model(x_train) # 计算损失函数 loss = nn.BCELoss()(hypothesis, y_train) # 反向传播 optimizer.zero_grad() loss.backward() optimizer.step() # 打印损失函数 if epoch % 100 == 0: print('Epoch {:4d}/{} Loss: {:.6f}'.format( epoch, 1000, loss.item() )) # 测试模型 with torch.no_grad(): hypothesis = model(x_train) predicted = (hypothesis > 0.5).float() accuracy = (predicted == y_train).float().mean() print('Accuracy: {:.2f}%'.format(accuracy * 100)) ``` 在这个示例中,我们使用单变量的数据集,将其转化为PyTorch Tensor,并定义了一个名为`LogisticRegression`的模型。该模型有一个线性层和一个sigmoid激活函数。我们使用BCELoss作为损失函数,使用随机梯度下降(SGD)优化器进行训练。在训练过程中,我们使用`optimizer.zero_grad()`将梯度归零,使用`loss.backward()`计算梯度,使用`optimizer.step()`对模型参数进行更新。最后,我们使用测试数据集对模型进行测试,并计算准确率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值