【PyTorch】深度学习实践之 逻辑斯蒂回归 Logistic Regression

本文目录

  • 回归vs分类
  • sigmoid函数
  • 损失函数
  • 例子
  • 课堂练习
    • 模型实现
    • 计算损失
    • 实现代码
    • 测试模型
  • 学习资料
  • 系列文章索引

回归vs分类

【PyTorch】深度学习实践之 逻辑斯蒂回归 Logistic Regression_第1张图片

  • 回归是预测数值
  • 分类是预测类别概率

sigmoid函数

【PyTorch】深度学习实践之 逻辑斯蒂回归 Logistic Regression_第2张图片

Logistic Function是最典型的sigmoid函数,因此有些书会直接说成sigmoid函数。
实际上满足如下条件即可称为sigmoid函数:

  • 饱和函数
  • 单调递增
  • 存在极限
    【PyTorch】深度学习实践之 逻辑斯蒂回归 Logistic Regression_第3张图片

损失函数

使用二分类交叉熵公式:
【PyTorch】深度学习实践之 逻辑斯蒂回归 Logistic Regression_第4张图片

  • y=1,预测值接近1,loss减小
  • y=0,预测值接近0,loss减小

例子

【PyTorch】深度学习实践之 逻辑斯蒂回归 Logistic Regression_第5张图片

  • 多个loss,MiniBatch求均值

课堂练习

模型实现

【PyTorch】深度学习实践之 逻辑斯蒂回归 Logistic Regression_第6张图片

可以看到init部分没有区别,因为逻辑回归没有参数增加。

计算损失

【PyTorch】深度学习实践之 逻辑斯蒂回归 Logistic Regression_第7张图片

实现代码

【PyTorch】深度学习实践之 逻辑斯蒂回归 Logistic Regression_第8张图片

import torch
import matplotlib.pyplot as plt

#1.准备数据集
x_data = torch.Tensor([[1.0],[2.0],[3.0]])
y_data = torch.Tensor([[2.0],[4.0],[6.0]])

#2.使用Class设计模型
class LogisticRegressionModel(torch.nn.Module):
    def __init__(self):
        super(LinearModel,self).__init__()
        self.linear = torch.nn.Linear(1,1)  
    def forward(self,x):
        y_pred = F.sigmoid(self.linear(x))
        return y_pred
 
model = LogisticRegressionModel()  #创建类LinearModel的实例

#3.构建损失函数和优化器的选择
criterion = torch.nn.BCELoss(size_average=False)
optimizer = torch.optim.SGD(model.parameters(),lr=0.01)

#4.进行训练迭代
epoch_list =[]
loss_list=[]
for epoch in range(1000):
    y_pred = model(x_data)
    loss = criterion(y_pred,y_data)
    print(epoch,loss.item()) 
   
    optimizer.zero_grad()
    loss.backward()    
    optimizer.step()  
    epoch_list.append(epoch+1)
    loss_list.append(loss.item())

# 画图
plt.plot(epoch_list,loss_list)
plt.xlabel('epoch')
plt.ylabel('loss')
plt.show()

【PyTorch】深度学习实践之 逻辑斯蒂回归 Logistic Regression_第9张图片

测试模型

【PyTorch】深度学习实践之 逻辑斯蒂回归 Logistic Regression_第10张图片

import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(0,10,200)
x_t=torch.Tensor(x).view((200,1))
# 使用训练好的模型
y_t=model(x_t)
y=y_t.data.numpy()

plt.plot(x,y)
plt.plot([0,10],[0.5,0.5],c='r')
plt.xlabel('Hours')
plt.ylabel('Probability of Pass')
plt.grid()
plt.show()

【PyTorch】深度学习实践之 逻辑斯蒂回归 Logistic Regression_第11张图片


学习资料

  • https://blog.csdn.net/qq_42585108/article/details/108148210

系列文章索引

教程指路:【《PyTorch深度学习实践》完结合集】 https://www.bilibili.com/video/BV1Y7411d7Ys?share_source=copy_web&vd_source=3d4224b4fa4af57813fe954f52f8fbe7

  1. 线性模型 Linear Model
  2. 梯度下降 Gradient Descent
  3. 反向传播 Back Propagation
  4. 用PyTorch实现线性回归 Linear Regression with Pytorch
  5. 逻辑斯蒂回归 Logistic Regression
  6. 多维度输入 Multiple Dimension Input
  7. 加载数据集Dataset and Dataloader
  8. 用Softmax和CrossEntroyLoss解决多分类问题(Minst数据集)
  9. CNN基础篇——卷积神经网络跑Minst数据集
  10. CNN高级篇——实现复杂网络
  11. RNN基础篇——实现RNN
  12. RNN高级篇—实现分类

你可能感兴趣的:(#,PyTorch深度学习实践,深度学习,pytorch,回归)