torch_02_多项式回归
"""
torch.float64对应torch.DoubleTensor
torch.float32对应torch.FloatTensor
将真实函数的数据点能够拟合成一个多项式
eg:y = 0.9 +0.5×x + 3×x*x + 2.4 ×x*x*x
"""
import torch from torch import nn def make_features(x):
x = x.unsqueeze(1)#在原来的基础上扩充了一维
return torch.cat([x ** i for i in range(1,4)], 1) def get_batch(batch_size=32): random = torch.randn(batch_size)
# print('random')
# print(random) #32个数 x = make_features(random)#进行维度扩充,扩充后32*1,又进行1,2,3次幂运算,拼接后32*3 '''Compute the actual results'''
y = f(x) # 32*3 *3*1
if torch.cuda.is_available():
return torch.autograd.Variable(x).cuda(), torch.autograd.Variable(y).cuda()
else:
return torch.autograd.Variable(x), torch.autograd.Variable(y) w_target = torch.FloatTensor([0.5,3,2.4]).unsqueeze(1)#三行一列
b_target = torch.FloatTensor([0.9]) def f(x):
return x.mm(w_target)+b_target[0] class poly_model(nn.Module):
def __init__(self):
super(poly_model, self).__init__()
self.poly = nn.Linear(3, 1)# 输入是3维,输出是1维 def forward(self, x):
out = self.poly(x)
return out if torch.cuda.is_available():
model = poly_model().cuda()
else:
model = poly_model() criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=1e-3) epoch = 0
for epoch in range(20):
batch_x,batch_y = get_batch()#batch_x 和get_batch里面的x是一样的
output = model(batch_x)
loss = criterion(output,batch_y)
print_loss = loss
print(loss.item()) # 0.4版本之后使用loss.item()从标量中获得Python number
optimizer.zero_grad()
loss.backward()
optimizer.step()
print('finished')
torch_02_多项式回归的更多相关文章
- R语言多项式回归
含有x和y这两个变量的线性回归是所有回归分析中最常见的一种:而且,在描述它们关系的时候,也是最有效.最容易假设的一种模型.然而,有些时候,它的实际情况下某些潜在的关系是非常复杂的,不是二元分析所能解决 ...
- 机器学习:scipy和sklearn中普通最小二乘法与多项式回归的使用对
相关内容连接: 机器学习:Python中如何使用最小二乘法(以下简称文一) 机器学习:形如抛物线的散点图在python和R中的非线性回归拟合方法(以下简称文二) 有些内容已经在上面两篇博文中提到了,所 ...
- Machine Learning--week2 多元线性回归、梯度下降改进、特征缩放、均值归一化、多项式回归、正规方程与设计矩阵
对于multiple features 的问题(设有n个feature),hypothesis 应该改写成 \[ \mathit{h} _{\theta}(x) = \theta_{0} + \the ...
- 线性回归,多项式回归(P2)
回归问题 回归问题包含有线性回归和多项式回归 简单来说,线性回归就是用多元一次方程拟合数据,多项式回归是用多元多次来拟合方程 在几何意义上看,线性回归拟合出的是直线,平面.多项式拟合出来的是曲线,曲面 ...
- python 机器学习多项式回归
现实世界的曲线关系都是通过增加多项式实现的,现在解决多项式回归问题 住房价格样本 样本图像 import matplotlib.font_manager as fm import matplotlib ...
- 【机器学习】多项式回归sklearn实现
[机器学习]多项式回归原理介绍 [机器学习]多项式回归python实现 [机器学习]多项式回归sklearn实现 使用sklearn框架实现多项式回归.使用框架更方便,可以少写很多代码. 使用一个简单 ...
- 【机器学习】多项式回归python实现
[机器学习]多项式回归原理介绍 [机器学习]多项式回归python实现 [机器学习]多项式回归sklearn实现 使用python实现多项式回归,没有使用sklearn等机器学习框架,目的是帮助理解算 ...
- 机器学习:多项式回归(scikit-learn中的多项式回归和 Pipeline)
一.scikit-learn 中的多项式回归 1)实例过程 模拟数据 import numpy as np import matplotlib.pyplot as plt x = np.random. ...
- Matlab多项式回归实现
多项式回归也称多元非线性回归,是指包含两个以上变量的非线性回归模型.对于多元非线性回归模型求解的传统解决方案,仍然是想办法把它转化成标准的线性形式的多元回归模型来处理. 多元非线性回归分析方程 如果自 ...
随机推荐
- 今日头条3面,被泄露的Java最新面试题
一.面试第 1 轮 1. linux 网络模型 2. b+树 3. 阻塞队列 4. redis 和 MongoDB 的区别.几个概念对比,还有底层实现. 5. 算法题: merge k sorted ...
- C/C++中new的使用规则
本人未重视new与指针的使用,终于,终于在前一天船翻了,而且没有爬上岸: 故此,今特来补全new的用法,及其一些规则: 话不多说 C++提供了一种“动态内存分配”机制,使得程序可以在运行期间,根据实际 ...
- Java面试复习(纯手打)
1.面向对象和面向过程的区别: 面向过程比面向对象高.因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素得时候,比如单片机.嵌入式开发.Linux/Unix等一般采用面向过 ...
- JavaScript深入浅出第5课:Chrome是如何成功的?
摘要: Chrome改变世界. <JavaScript深入浅出>系列: JavaScript深入浅出第1课:箭头函数中的this究竟是什么鬼? JavaScript深入浅出第2课:函数是一 ...
- Windows Server 2016-Hyper-V Replica副本功能介绍
Hyper-V副本是一种可用于复制虚拟机的功能,作为业务连续性解决方案的一部分.从Windows Server 2012中,Hyper-V角色引入了Hyper-V Replica作为虚拟机的内置复制机 ...
- Mybatis-plus使用分页进行分页查询
首先先配置配置文件 @Configuration public class MybatisPlusConfig { @Bean public PaginationInterceptor paginat ...
- SQL-on-Hadoop 技术
SQL-on-Hadoop 技术 备注 Apache Hive Cloudera Impala Facebook Presto Apache Drill Spark SQL Apache Phoeni ...
- Docker底层原理(三)
1. 我们运行:docker run hello-world 由于本地没有hello-world,所以会远程下载一个hello-world的镜像,并在容器内运行. 2. docker run干了什么?
- echars 饼状图 轮循 水平翻转
code: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- 阿里云serverless使用笔记
1.使用api网关服务,创建完api后,测试时,需要传“请求签名”,否则会报401 ‘Empty Signature’错误.相关文档<错误编码表,请求签名>.(错误信息放置与响应头的‘x- ...