《Pytorch - 逻辑回归模型》
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 - 逻辑回归模型》相关推荐
- ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)
视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...
- ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析
视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...
- 信息学奥赛真题解析(玩具谜题)
玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...
- 信息学奥赛之初赛 第1轮 讲解(01-08课)
信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...
- 信息学奥赛一本通习题答案(五)
最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...
- 信息学奥赛一本通习题答案(三)
最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...
- 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题
第1章 快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章 素数 第 3 章 约数 第 4 章 同余问题 第 5 章 矩阵乘法 第 6 章 ...
- 信息学奥赛一本通题目代码(非题库)
为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...
- 信息学奥赛一本通(C++版) 刷题 记录
总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...
- 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离
首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...
最新文章
- R语言plotly可视化:plotly可视化累积cumulative直方图(Cumulative Histogram)
- json串反转义(消除反斜杠)-- 转载
- 专 linux命令之set x详解
- promise设置多个接口并行调用
- Kitten编程猫里如何先后播放不同的背景音乐
- Java线程间通信-回调的实现方式
- 物联网专科专业必修课程_江西自考专科物联网技术专业的考试课程/科目
- TCP/PI参考模型(应用层、传输层、网际层、网络接口层)、五层参考模型(应用层、传输层、网络层、数据链路层、物理层)、OSI与TCP/IP参考模型比较...
- Anaconda——复制Conda的虚拟环境
- 优雅的实现Activiti动态调整流程(自由跳转、前进、后退、分裂、前加签、后加签等),含范例代码!...
- AWVS docker版部署
- cad插件_CAD插件燕秀工具箱2.81
- 计算机国际标准编码,【计算机基础】常用编码格式
- SlideLive:提供关系型PPT模板下载
- 【python练习】摘苹果题
- 用Python的statsmodels包做前向逐步回归
- 蓝桥杯2020年上半场省赛完整版题解(Java 大学B组)
- 拉钩网前端项目实战04
- 以太坊区块链浏览器(二)开发
- 使用CVX进行Matlab仿真时出现的一些问题