pytorch 回归问题实战

深度学习中最重要的思想就是梯度下降,深度学习可以看出一个黑盒模型,其内部实质采用了梯度下降法。什么是梯度下降法呢?下面从梯度下降开始介绍,以及如何使用Pytorch实现回归。`

1概述

gradient descent在机器学习中应用十分的广泛。不论在线性回归还是在Logistic回归中,主要通过迭代找到目标函数的最小值,或者将目标函数收敛到最小值。梯度下降法是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降法和最小二乘法是最常采用的方法。在求解损失函数的最小值时,可以通过梯度下降法来迭代求解,得到最小化的损失函数和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。在机器学习中,基于基本的梯度下降法发展了两种常用梯度下降方法,分别为随机梯度下降法和批量梯度下降。

2梯度下降算法

2.1梯度下降

2.2.1一元函数的微分

1.单变量的微分,函数只有一个变量时:
y=sinx+cosx,对x求导数,则有f′(x)=cosx−sinxy=2x+3x2,对x求导数,则有f′(x)=6x+2y =sinx+cosx,对x求导数, 则有{f}'(x)=cosx-sinx \\ y =2x+3x^2,对x求导数,则有{f}'(x) =6x+2 y=sinx+cosx,对x求导数,则有f′(x)=cosx−sinxy=2x+3x2,对x求导数,则有f′(x)=6x+2
以上是关于一阶微分举两个例子,就是就求关于x的导数。例如下面这个简单的例子:

2.2.2多元函数的偏微分

针对多元微分我门需要求的是关于变量的偏微分
z=f(g(x),g(y),则dzdx=f′(g(x),g(y))g′(x)dzdy=f′(g(x),g(y))g′(y)z=f(g(x),g(y),则\frac{dz}{dx}={f}'(g(x),g(y))g'(x)\\ \frac{dz}{dy}=f'(g(x),g(y))g'(y) z=f(g(x),g(y),则dxdz​=f′(g(x),g(y))g′(x)dydz​=f′(g(x),g(y))g′(y)

3梯度

如果函数为一元函数,梯度就是该函数的导数:

如果为二元函数,梯度定义为:

梯度下降法公式:

4基于pytorch线性回归实战

下面有关pytorch实现线性回归的实战。
y=wx+by =wx+by=wx+b
如何针对该函数实现线性回归。主要有下面几个步骤:计算loss,计算梯度。计算循环梯度。其中loss=(wx+b−y)2loss=(wx+b-y)^2loss=(wx+b−y)2
需要使用梯度下降使得loss损失值最小。在loss值取得最小的时候。求解参数和参数b。
其代码如下:

"""
线性回归实战
compute loss
compute gradient
iteration computer gradient
"""
import numpy as np
#y = w*x+b
#compute loss
def compute_error_for_line_given_points(w,b,points):#points一些列x,y的组合。totalError = 0for i in range(0,len(points)):x = points[i, 0]#获得i号点x输入,取到每个xy = points[i, 1]#获得i号点y输入,取到每个ytotalError += (y-(w * x + b))**2#累加起来的totalloss值return totalError/float(len(points))#对totalloss求平均
#compute gradient计算梯度
def step_gradient(b_current,w_current,points,learningRate):b_gradient = 0w_gradient = 0N = float(len(points))for i in range(0,len(points)):x = points[i,0]y = points[i,1]b_gradient += -(2/N)*(y-((w_current*x)-b_current))w_gradient += -(2/N)*x*(y-((w_current*x)-b_current))new_b = b_current - (learningRate * b_gradient)new_w = w_current - (learningRate * w_gradient)return [new_b,new_w]
#迭代循环计算gradient信息
def gradient_descent_runner(points,starting_b,starting_w,learning_rate,num_iterations):b = starting_bw = starting_wfor i in range(num_iterations):b,m = step_gradient(b,w,np.array(points),learning_rate)return [b,m]
#主函数def run():points = np.genfromtxt("data.csv", delimiter=",")learning_rate = 0.0001initial_b = 0 # initial y-intercept guessinitial_m = 0 # initial slope guessnum_iterations = 1000print("Starting gradient descent at b = {0}, m = {1}, error = {2}".format(initial_b, initial_m,compute_error_for_line_given_points(initial_b, initial_m, points)))print("Running...")[b, m] = gradient_descent_runner(points, initial_b, initial_m, learning_rate, num_iterations)print("After {0} iterations b = {1}, m = {2}, error = {3}".format(num_iterations, b, m,compute_error_for_line_given_points(b, m, points)))if __name__ == '__main__':run()

在人工智能领域探索的需要沉下心来,慢慢的沉淀自己。不断提升自我。

pytorch 回归问题实战相关推荐

  1. 深度学习三(PyTorch物体检测实战)

    深度学习三(PyTorch物体检测实战) 文章目录 深度学习三(PyTorch物体检测实战) 1.网络骨架:Backbone 1.1.神经网络基本组成 1.1.1.卷积层 1.1.2.激活函数层 1. ...

  2. R语言glmnet拟合lasso回归模型实战:lasso回归模型的模型系数及可视化、lasso回归模型分类评估计算(混淆矩阵、accuracy、Deviance)

    R语言glmnet拟合lasso回归模型实战:lasso回归模型的模型系数(lasso regression coefficients)及可视化.lasso回归模型分类评估计算(混淆矩阵.accura ...

  3. R语言glm拟合logistic回归模型实战:基于glm构建逻辑回归模型及模型系数统计显著性分析、每个预测因子对响应变量的贡献

    R语言glm拟合logistic回归模型实战:基于glm构建逻辑回归模型及模型系数统计显著性分析.每个预测因子对响应变量的贡献 目录

  4. R语言构建ElasticNet回归模型实战:基于mtcars数据集

    R语言构建ElasticNet回归模型实战:基于mtcars数据集 目录 R语言构建ElasticNet回归模型实战:基于mtcars数据集 #ElasticNet回归

  5. R语言无序多分类Logistic回归模型实战

    R语言无序多分类Logistic回归模型实战 目录 R语言无序多分类Logistic回归模型实战 #导入包 #加载数据数据编码

  6. 【深度学习】基于Torch的Python开源机器学习库PyTorch回归

    [深度学习]基于Torch的Python开源机器学习库PyTorch回归 文章目录1 torch.autograd 2 torch.nn.functional 3 详细的回归DEMO3.1 DATAS ...

  7. 实战例子_Pytorch官方力荐新书《Pytorch深度学习实战指南》pdf及代码分享

    PyTorch是目前非常流行的机器学习.深度学习算法运算框架.它可以充分利用GPU进行加速,可以快速的处理复杂的深度学习模型,并且具有很好的扩展性,可以轻松扩展到分布式系统.PyTorch与Pytho ...

  8. pytorch回归_PyTorch:用岭回归检查泰坦尼克号下沉

    pytorch回归 In this notebook, we shall use this dataset containing data about passengers from the Tita ...

  9. 深度学习二(Pytorch物体检测实战)

    深度学习二(Pytorch物体检测实战) 文章目录 深度学习二(Pytorch物体检测实战) 1.PyTorch基础 1.1.基本数据结构:Tensor 1.1.1.Tensor数据类型 1.1.2. ...

最新文章

  1. WindowsPhone 7.8 Tiles 3 : 7.8的Tiles利器mangopollo
  2. linux 交叉编译 静态库,从Linux为Windows开发交叉编译静态库
  3. 一个form 如何做两次提交_如何做一个优秀的家长
  4. 比较流行的10个博客系统程序对比选择
  5. 计算机 图论基础知识,计算机基础知识
  6. 你踩过dataguard的哪些坑?
  7. 23种设计模式(七)对象创建之工厂方法
  8. [thinkphp] page类整合bootstrap分页样式
  9. SmartAdmin(SmartAdmin_v1.5.2)
  10. Infopath入门到精通系列-2 Infopath 文件内容查看
  11. 抛弃clover,爱上QTTabBar
  12. 数据库读写分离下的数据同步解决方案
  13. 沉没的王国---揭秘滇东自杞国(5)
  14. 电脑小知识:计算机防火墙到底是什么?能不能阻止黑客的入侵?
  15. 敏捷方法 - 极限编程与工程实践
  16. 经典练习项目门级的三个案列
  17. mybatis的特殊符号:amp;lt;gt;quot;apos;
  18. OLTP+OLAP->HTAP
  19. 硬件科普系列之硬盘——前言与准备知识篇
  20. 云师大计算机宿舍,云南师范大学宿舍条件、住宿好吗、寝室情况

热门文章

  1. 汽车UDS诊断详解及Vector相关工具链使用说明——6.2 VT System 入门
  2. [散文]芒果女人(作者:毕淑敏)
  3. Python编程 | 系统编程 | 脚本运行上下文 | 标准流
  4. java自动化测试语言高级之Java 9 新特性
  5. 计算机网络实践网线制作,网线怎么制作
  6. Java:控制反转(IoC)与依赖注入(DI)
  7. 豆瓣上《特权和寻租的经济学》的书评
  8. 用小毛桃破解Window7 64位旗舰版 Administrator密码
  9. 关于制定《传统蒙古文信息交换与处理字形字符标准编码》
  10. python自动添加cad点坐标_利用pyautocad模块批量画点位