使用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中使用PIL库实现图片高斯模糊实例
Feb 08 Python
python字典get()方法用法分析
Apr 17 Python
简单介绍Python中利用生成器实现的并发编程
May 04 Python
Python二叉搜索树与双向链表转换实现方法
Apr 29 Python
Python抓取框架Scrapy爬虫入门:页面提取
Dec 01 Python
python实现黑客字幕雨效果
Jun 21 Python
Python数据类型之Dict字典实例详解
May 07 Python
Python何时应该使用Lambda函数
Jul 02 Python
对Python _取log的几种方式小结
Jul 25 Python
Windows下Anaconda安装、换源与更新的方法
Apr 17 Python
Python smtp邮件发送模块用法教程
Jun 15 Python
django教程如何自学
Jul 31 Python
pytorch实现线性回归以及多元回归
python如何获取网络数据
Apr 11 #Python
Pytorch 使用tensor特定条件判断索引
selenium.webdriver中add_argument方法常用参数表
Apr 08 #Python
python3使用diagrams绘制架构图的步骤
python实现求纯色彩图像的边框
python爬取企查查企业信息之selenium自动模拟登录企查查
You might like
php面向对象的方法重载两种版本比较
2008/09/08 PHP
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
2017/03/15 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
js或css文件后面跟参数的原因说明
2010/01/09 Javascript
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
2011/04/01 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
2012/12/07 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
一个支持任意尺寸的图片上下左右滑动效果
2014/08/24 Javascript
jQuery中JSONP的两种实现方式详解
2016/09/26 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
vue cli webpack中使用sass的方法
2018/02/24 Javascript
详解Vue 全局引入bass.scss 处理方案
2018/03/26 Javascript
深入理解vue-class-component源码阅读
2019/02/18 Javascript
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
使用 JavaScript 创建并下载文件(模拟点击)
2019/10/25 Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
2020/02/28 Javascript
vue跳转页面的几种方法(推荐)
2020/03/26 Javascript
[49:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第二场 3月4日
2021/03/11 DOTA
python在linux中输出带颜色的文字的方法
2014/06/19 Python
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
python selenium firefox使用详解
2019/02/26 Python
Python容器类型公共方法总结
2020/08/19 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
EGO Shoes美国/加拿大:英国时髦鞋类品牌
2018/08/04 全球购物
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
上课迟到检讨书100字
2014/01/11 职场文书
促销活动总结
2014/04/28 职场文书
2015入党自传格式范文
2015/06/26 职场文书