使用pytorch实现线性回归


Posted in Python onApril 11, 2021

线性回归都是包括以下几个步骤:定义模型、选择损失函数、选择优化函数、 训练数据、测试

import torch
import matplotlib.pyplot as plt
# 构建数据集
x_data= torch.Tensor([[1.0],[2.0],[3.0],[4.0],[5.0],[6.0]])
y_data= torch.Tensor([[2.0],[4.0],[6.0],[8.0],[10.0],[12.0]])
#定义模型
class LinearModel(torch.nn.Module):
    def __init__(self):
        super(LinearModel, self).__init__()
        self.linear= torch.nn.Linear(1,1) #表示输入输出都只有一层,相当于前向传播中的函数模型,因为我们一般都不知道函数是什么形式的
 
    def forward(self, x):
        y_pred= self.linear(x)
        return y_pred
model= LinearModel()
# 使用均方误差作为损失函数
criterion= torch.nn.MSELoss(size_average= False)
#使用梯度下降作为优化SGD
# 从下面几种优化器的生成结果图像可以看出,SGD和ASGD效果最好,因为他们的图像收敛速度最快
optimizer= torch.optim.SGD(model.parameters(),lr=0.01)
# ASGD
# optimizer= torch.optim.ASGD(model.parameters(),lr=0.01)
# optimizer= torch.optim.Adagrad(model.parameters(), lr= 0.01)
# optimizer= torch.optim.RMSprop(model.parameters(), lr= 0.01)
# optimizer= torch.optim.Adamax(model.parameters(),lr= 0.01)
# 训练
epoch_list=[]
loss_list=[]
for epoch in range(100):
    y_pred= model(x_data)
    loss= criterion(y_pred, y_data)
    epoch_list.append(epoch)
    loss_list.append(loss.item())
    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([[7.0]])
y_test= model(x_test)
print("y_pred= ",y_test.data)
 
plt.plot(epoch_list, loss_list)
plt.xlabel("epoch")
plt.ylabel("loss_val")
plt.show()

使用SGD优化器图像:                                                      

使用pytorch实现线性回归

使用ASGD优化器图像:

使用pytorch实现线性回归

使用Adagrad优化器图像:                                                 

使用pytorch实现线性回归

使用Adamax优化器图像:

使用pytorch实现线性回归

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 返回汉字的汉语拼音
Feb 27 Python
跟老齐学Python之再深点,更懂list
Sep 20 Python
Python编程之微信推送模板消息功能示例
Aug 21 Python
Python工厂函数用法实例分析
May 14 Python
Django集成搜索引擎Elasticserach的方法示例
Jun 04 Python
Python 等分切分数据及规则命名的实例代码
Aug 16 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
Sep 15 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
Oct 17 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
Dec 04 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
Apr 29 Python
python安装sklearn模块的方法详解
Nov 28 Python
解决Tkinter中button按钮未按却主动执行command函数的问题
May 23 Python
pytorch实现线性回归以及多元回归
python如何获取网络数据
Apr 11 #Python
Pytorch 使用tensor特定条件判断索引
selenium.webdriver中add_argument方法常用参数表
Apr 08 #Python
python3使用diagrams绘制架构图的步骤
python实现求纯色彩图像的边框
python爬取企查查企业信息之selenium自动模拟登录企查查
You might like
PHP 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
php生成html文件方法总结
2014/12/01 PHP
PHP简单实现生成txt文件到指定目录的方法
2016/04/25 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
Thinkphp5框架使用validate实现验证功能的方法
2019/08/27 PHP
W3C Group的JavaScript1.8 新特性介绍
2009/05/19 Javascript
鼠标事件延时切换插件
2011/03/12 Javascript
js检查页面上有无重复id的实现代码
2013/07/17 Javascript
JQuery Tips相关(1)----关于$.Ready()
2014/08/14 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
关于Javascript中defer和async的区别总结
2016/09/20 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
2016/12/08 Javascript
Vue2.0表单校验组件vee-validate的使用详解
2017/05/02 Javascript
vue超时计算的组件实例代码
2018/07/09 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
react PropTypes校验传递的值操作示例
2020/04/28 Javascript
Python3计算三角形的面积代码
2017/12/18 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
pycharm创建一个python包方法图解
2019/04/10 Python
django的csrf实现过程详解
2019/07/26 Python
python3.6编写的单元测试示例
2019/08/17 Python
ZWILLING双立人英国网上商店:德国刀具锅具厨具品牌
2018/05/15 全球购物
公务员的自我鉴定
2013/10/26 职场文书
自荐信格式
2013/12/01 职场文书
法律专业求职信
2014/05/24 职场文书
医德医魂心得体会
2014/09/11 职场文书
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
2015中学教学工作总结
2015/07/22 职场文书
体育委员竞选稿
2015/11/21 职场文书
mysql数据库入门第一步之创建表
2021/05/14 MySQL
vue2实现provide inject传递响应式
2021/05/21 Vue.js
vue项目中的支付功能实现(微信支付和支付宝支付)
2022/02/18 Vue.js
设置IIS Express并发数
2022/07/07 Servers