2020年10月4号,依然在家学习。
今天是我写的第二个 Pytorch程序,从今天起也算是入门了。
这里是简单的实现了逻辑回归开始。

回顾线性回归,线性模型如下 y = wx + b,图画的丑了,意思到了就行。

回顾逻辑回归,线性模型如下 y =σ(wx + b) ,图画的丑了,意思到了就行。

也就是逻辑回归其实就是在之前的线性回归的基础上增加了一个 sigmoid函数层。而且误差损失函数也会发生变化,需要使用二分类的误差损失函数,具体细节在很早的博文机器学习里面有介绍,这里就不多赘述了。

话不多说,我就直接上代码实例描述,代码的注释我都是用中文直接写的。

import torch
import torch.nn.functional as F# Step 1: ========创建模型========
# 定义一个类,继承自 torch.nn.Module,torch.nn.Module是callable的类
# 在整个类里面重新定义一个逻辑回归模型 y = sigmod(wx+b),也可以理解成内置一个线性层。
# 整个子类需要重写forward函数,
class LogisticRegressionModel(torch.nn.Module):def __init__(self):# 调用父类的初始化函数,必须要的super(LogisticRegressionModel, self).__init__()# 创建一个线性层,作为内置层,也是实例化一个torch.nn.Linear对象,输入数据是一维的,输出数据也是一维的,默认包含偏置参数# torch.nn.Linear也是callable的类self.linearLayer = torch.nn.Linear(1, 1)def forward(self, x):# 使用这个包下面的sigmoid函数做激活y_out = F.sigmoid(self.linearLayer(x))return y_out# 创建和实例化一个整个模型类的对象
Logistic_Model = LogisticRegressionModel()
# 打印出整个模型
print(Logistic_Model)# Step 2: ========定义损失函数和优化器========
# 定义一个均方差误差损失函数 binary classification error loss
Logistic_Criterion = torch.nn.BCELoss(size_average=True)
# 创建一个优化器,是用来做参数训练的,或者说是反向传播后更新参数,线性回归一般选择随机梯度下降,当然还有其他的梯度下降的方式。
# lr 就是learning rate,把模型的所有参数都交给优化器,反向传播中,优化器会递归地计算参数的偏导数以及做参数更新。
Logistic_Optimizer = torch.optim.SGD(Logistic_Model.parameters(), lr=0.01)# Step 3: ========得到数据========
# 为了方便演示和学习,这里我随意构造几个数据
x_data = torch.Tensor([[1.0], [2.0], [3.0], [4.0], [5.0], [6.0], [7.0], [8.0]])
y_data = torch.Tensor([[0], [0], [0], [0], [1], [1], [1], [1]])# Step 4: ========开始训练========
# 迭代进行训练
iteration = 100
for itr in range(iteration):# 计算前向传播,也就是计算输出# 由于模型是callable的,最后会自动调用__callable__函数,再其中就有一个是forward函数调用。y_output = Logistic_Model(x_data)# 得到损失值loss = Logistic_Criterion(y_output, y_data)print("in the ", itr, "th iteration, loss is", loss.item())# 反向传播,也就是对参数进行训练,需要注意的是,需要把优化其中上一次计算的梯度值清0Logistic_Optimizer.zero_grad()# 计算反向的各个参数的偏导数loss.backward()# 更新参数Logistic_Optimizer.step()# 打印出参数
print("w is: ", Logistic_Model.linearLayer.weight.item())
print("b is: ", Logistic_Model.linearLayer.bias.item())

《Pytorch - 逻辑回归模型》相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. R语言plotly可视化:plotly可视化累积cumulative直方图(Cumulative Histogram)
  2. json串反转义(消除反斜杠)-- 转载
  3. 专 linux命令之set x详解
  4. promise设置多个接口并行调用
  5. Kitten编程猫里如何先后播放不同的背景音乐
  6. Java线程间通信-回调的实现方式
  7. 物联网专科专业必修课程_江西自考专科物联网技术专业的考试课程/科目
  8. TCP/PI参考模型(应用层、传输层、网际层、网络接口层)、五层参考模型(应用层、传输层、网络层、数据链路层、物理层)、OSI与TCP/IP参考模型比较...
  9. Anaconda——复制Conda的虚拟环境
  10. 优雅的实现Activiti动态调整流程(自由跳转、前进、后退、分裂、前加签、后加签等),含范例代码!...
  11. AWVS docker版部署
  12. cad插件_CAD插件燕秀工具箱2.81
  13. 计算机国际标准编码,【计算机基础】常用编码格式
  14. SlideLive:提供关系型PPT模板下载
  15. 【python练习】摘苹果题
  16. 用Python的statsmodels包做前向逐步回归
  17. 蓝桥杯2020年上半场省赛完整版题解(Java 大学B组)
  18. 拉钩网前端项目实战04
  19. 以太坊区块链浏览器(二)开发
  20. 使用CVX进行Matlab仿真时出现的一些问题

热门文章

  1. lemur run PLSA
  2. 记录一些常见的沟通问题 #29
  3. JMeter学习笔记——数据库压力测试(JDBC Request)
  4. 初学者Git和GitHub简介(教程)
  5. BGP——选路—(8~13条)选路源分析(讲解+配置命令)
  6. 【C语言】无参函数调用实例
  7. react apollo_2020年的React + Apollo教程(真实示例)
  8. 使用certbot自动申请续期SSL证书(Ubuntu)
  9. Nginx 配置实现web解析php代码 过程记录
  10. 利用Python我发现我女朋友每天都在看这种网站