pytorch实现线性拟合方式


Posted in Python onJanuary 15, 2020

一维线性拟合

数据为y=4x+5加上噪音

结果:

pytorch实现线性拟合方式

import numpy as np
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import pyplot as plt
from torch.autograd import Variable
import torch
from torch import nn
 
X = torch.unsqueeze(torch.linspace(-1, 1, 100), dim=1)
Y = 4*X + 5 + torch.rand(X.size())
 
class LinearRegression(nn.Module):
 def __init__(self):
  super(LinearRegression, self).__init__()
  self.linear = nn.Linear(1, 1) # 输入和输出的维度都是1
 def forward(self, X):
  out = self.linear(X)
  return out
 
model = LinearRegression()
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=1e-2)
 
num_epochs = 1000
for epoch in range(num_epochs):
 inputs = Variable(X)
 target = Variable(Y)
 # 向前传播
 out = model(inputs)
 loss = criterion(out, target)
 
 # 向后传播
 optimizer.zero_grad() # 注意每次迭代都需要清零
 loss.backward()
 optimizer.step()
 
 if (epoch + 1) % 20 == 0:
  print('Epoch[{}/{}], loss:{:.6f}'.format(epoch + 1, num_epochs, loss.item()))
model.eval()
predict = model(Variable(X))
predict = predict.data.numpy()
plt.plot(X.numpy(), Y.numpy(), 'ro', label='Original Data')
plt.plot(X.numpy(), predict, label='Fitting Line')
plt.show()

多维:

from itertools import count
import torch
import torch.autograd
import torch.nn.functional as F
 
POLY_DEGREE = 3
def make_features(x):
 """Builds features i.e. a matrix with columns [x, x^2, x^3]."""
 x = x.unsqueeze(1)
 return torch.cat([x ** i for i in range(1, POLY_DEGREE+1)], 1)
 
 
W_target = torch.randn(POLY_DEGREE, 1)
b_target = torch.randn(1)
 
 
def f(x):
 return x.mm(W_target) + b_target.item()
def get_batch(batch_size=32):
 random = torch.randn(batch_size)
 x = make_features(random)
 y = f(x)
 return x, y
# Define model
fc = torch.nn.Linear(W_target.size(0), 1)
batch_x, batch_y = get_batch()
print(batch_x,batch_y)
for batch_idx in count(1):
 # Get data
 
 
 # Reset gradients
 fc.zero_grad()
 
 # Forward pass
 output = F.smooth_l1_loss(fc(batch_x), batch_y)
 loss = output.item()
 
 # Backward pass
 output.backward()
 
 # Apply gradients
 for param in fc.parameters():
  param.data.add_(-0.1 * param.grad.data)
 
 # Stop criterion
 if loss < 1e-3:
  break
 
 
def poly_desc(W, b):
 """Creates a string description of a polynomial."""
 result = 'y = '
 for i, w in enumerate(W):
  result += '{:+.2f} x^{} '.format(w, len(W) - i)
 result += '{:+.2f}'.format(b[0])
 return result
 
 
print('Loss: {:.6f} after {} batches'.format(loss, batch_idx))
print('==> Learned function:\t' + poly_desc(fc.weight.view(-1), fc.bias))
print('==> Actual function:\t' + poly_desc(W_target.view(-1), b_target))

以上这篇pytorch实现线性拟合方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
对于Python的框架中一些会话程序的管理
Apr 20 Python
Python实现的HTTP并发测试完整示例
Apr 23 Python
Python中的fileinput模块的简单实用示例
Jul 09 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
Python简单计算数组元素平均值的方法示例
Dec 26 Python
python获取时间及时间格式转换问题实例代码详解
Dec 06 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
Feb 20 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
Feb 23 Python
如何基于python对接钉钉并获取access_token
Apr 21 Python
python 实现的车牌识别项目
Jan 25 Python
Python的三个重要函数详解
Jan 18 Python
如何利用python实现Simhash算法
Jun 28 Python
Python 支持向量机分类器的实现
Jan 15 #Python
pytorch-神经网络拟合曲线实例
Jan 15 #Python
Pytorch中的VGG实现修改最后一层FC
Jan 15 #Python
详解Python3 中的字符串格式化语法
Jan 15 #Python
用pytorch的nn.Module构造简单全链接层实例
Jan 14 #Python
pytorch三层全连接层实现手写字母识别方式
Jan 14 #Python
Python实现bilibili时间长度查询的示例代码
Jan 14 #Python
You might like
PDO::commit讲解
2019/01/27 PHP
PHP实现的文件浏览器功能简单示例
2019/09/12 PHP
统计出现最多的字符次数的js代码
2010/12/03 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
2016/05/31 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
获取jqGrid中选择的行的数据
2016/11/30 Javascript
微信小程序中遇到的iOS兼容性问题小结
2018/11/14 Javascript
详解微信小程序胶囊按钮返回|首页自定义导航栏功能
2019/06/14 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
Element DateTimePicker日期时间选择器的使用示例
2020/07/27 Javascript
详解React中共享组件逻辑的三种方式
2021/02/02 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
2021/02/24 Javascript
利用Psyco提升Python运行速度
2014/12/24 Python
Python切片知识解析
2016/03/06 Python
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
python框架中flask知识点总结
2018/08/17 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
英国浴室洗脸盆购物网站:Click Basin
2018/06/08 全球购物
圣诞树世界:Christmas Tree World
2019/12/10 全球购物
万豪国际住宅与别墅集团:Homes & Villas by Marriott International
2020/10/08 全球购物
教师自我鉴定范文
2013/11/10 职场文书
艺术应用与设计个人的自我评价
2013/11/23 职场文书
公司成立感言
2014/01/11 职场文书
三年大学生活自我鉴定
2014/01/21 职场文书
十佳青年个人事迹材料
2014/01/28 职场文书
中式结婚主持词
2014/03/14 职场文书
爱心捐书活动总结
2014/07/05 职场文书
党员自我评议个人对照检查材料
2014/09/16 职场文书
python实现图片批量压缩
2021/04/24 Python