pytorch随机梯度下降法
1、梯度、偏微分以及梯度的区别和联系
(1)导数是指一元函数对于自变量求导得到的数值,它是一个标量,反映了函数的变化趋势;
(2)偏微分是多元函数对各个自变量求导得到的,它反映的是多元函数在各个自变量方向上的变化趋势,也是标量;
(3)梯度是一个矢量,是有大小和方向的,其方向是指多元函数增大的方向,而大小是指增长的趋势快慢。

2、在寻找函数的最小值的时候可以利用梯度下降法来进行寻找,一般会出现以下两个问题局部最优解和铵点(不同自变量的变化趋势相反,一个处于极小,一个处于极大)


3、初始状态、学习率和动量(如何逃出局部最优解)是全部寻优的三个重要影响因素


4、常见函数的梯度计算基本和一元函数导数是一致的


5、常见的激活函数主要有三种:
(1)sigmoid函数

(2)tanh函数

(3)Relu函数


6、常用的损失函数-loss函数
(1)MSE-回归问题
(2)Cross entropy loss-分类问题


7、对于MSE均方差的loss函数,计算时可以利用norm函数来进行计算,调用的格式如下所示:
MSE=torch.norm(y-y_pre,2).pow(2)
也可以直接调用API:
F.mse_loss(y,y_pre)来进行求解
8、对于梯度的求取在pytorch里面主要有两种方式:
(1)torch.autograd.grad(loss,[w0,w1,...],retain_graph=True)
(2)loss.backward(retain_graph=True) #其中使得retain_graph=True的目的是使得其不发生变化


9、感知机及其梯度推导——完整的神经网络的梯度计算的过程
(1)单输出模型的梯度计算

(2)多输出模型的梯度计算

10、链式法则
链式法则主要是用来求取多隐含层和多输出的神经网络的梯度计算关系,它可以方便地进行计算,高效准确


11、使用梯度下降法求解一个2D函数的最小值:
#反向传播过程解析
#2D函数最优化曲线
#画3D函数图像输出
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
import numpy as np
import mpl_toolkits.mplot3d
figure=plt.figure()
#ax = Axes3D(figure)
ax=figure.gca(projection="3d")
x1=np.linspace(-6,6,1000)
y1=np.linspace(-6,6,1000)
x,y =np.meshgrid(x1,y1)
z=(x**2+y-11)**2+(x+y**2-7)**2
#ax.plot_surface(x,y,z,rstride=10,cstride=4,cmap=cm.YlGnBu_r)
ax.plot_surface(x,y,z,cmap="rainbow")
plt.show()

#梯度下降法寻找2D函数最优值函数
def f(x):
return (x[0]**2+x[1]-11)**2+(x[0]+x[1]**2-7)**2
x=torch.tensor([-4.,0.],requires_grad=True) #
optimizer=torch.optim.Adam([x],lr=1e-3)
for step in range(20000):
  pre=f(x)
  optimizer.zero_grad()
  pre.backward()
  optimizer.step()
  if step % 2000==0:
    print(step,x.tolist(),pre)

输出结果如下所示:

pytorch梯度下降法讲解(非常详细)的更多相关文章

  1. coursera机器学习笔记-机器学习概论,梯度下降法

    #对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...

  2. 最小二乘法 及 梯度下降法 分别对存在多重共线性数据集 进行线性回归 (Python版)

    网上对于线性回归的讲解已经很多,这里不再对此概念进行重复,本博客是作者在听吴恩达ML课程时候偶然突发想法,做了两个小实验,第一个实验是采用最小二乘法对数据进行拟合, 第二个实验是采用梯度下降方法对数据 ...

  3. (转)梯度下降法及其Python实现

    梯度下降法(gradient descent),又名最速下降法(steepest descent)是求解无约束最优化问题最常用的方法,它是一种迭代方法,每一步主要的操作是求解目标函数的梯度向量,将当前 ...

  4. 谷歌机器学习速成课程---3降低损失 (Reducing Loss):梯度下降法

    迭代方法图(图 1)包含一个标题为“计算参数更新”的华而不实的绿框.现在,我们将用更实质的方法代替这种华而不实的算法. 假设我们有时间和计算资源来计算 w1 的所有可能值的损失.对于我们一直在研究的回 ...

  5. 神经网络优化算法:梯度下降法、Momentum、RMSprop和Adam

    最近回顾神经网络的知识,简单做一些整理,归档一下神经网络优化算法的知识.关于神经网络的优化,吴恩达的深度学习课程讲解得非常通俗易懂,有需要的可以去学习一下,本人只是对课程知识点做一个总结.吴恩达的深度 ...

  6. matlab实现梯度下降法(Gradient Descent)的一个例子

    在此记录使用matlab作梯度下降法(GD)求函数极值的一个例子: 问题设定: 1. 我们有一个$n$个数据点,每个数据点是一个$d$维的向量,向量组成一个data矩阵$\mathbf{X}\in \ ...

  7. 固定学习率梯度下降法的Python实现方案

    应用场景 优化算法经常被使用在各种组合优化问题中.我们可以假定待优化的函数对象\(f(x)\)是一个黑盒,我们可以给这个黑盒输入一些参数\(x_0, x_1, ...\),然后这个黑盒会给我们返回其计 ...

  8. [Machine Learning] 梯度下降法的三种形式BGD、SGD以及MBGD

    在应用机器学习算法时,我们通常采用梯度下降法来对采用的算法进行训练.其实,常用的梯度下降法还具体包含有三种不同的形式,它们也各自有着不同的优缺点. 下面我们以线性回归算法来对三种梯度下降法进行比较. ...

  9. 机器学习基础——梯度下降法(Gradient Descent)

    机器学习基础--梯度下降法(Gradient Descent) 看了coursea的机器学习课,知道了梯度下降法.一开始只是对其做了下简单的了解.随着内容的深入,发现梯度下降法在很多算法中都用的到,除 ...

随机推荐

  1. 反编译 java

    1.winrar https://www.rarlab.com/ 2.github  jd-gui http://java-decompiler.github.io/ SignNatureTest.j ...

  2. 「CF815C」Karen and Supermarket

    传送门 Luogu 解题思路 树形背包. 设 \(f[i][j][0/1]\) 表示在以 \(i\) 为根的子树中选 \(j\) 件商品的最少花费. 边界条件: \(f[i][j][0] = \min ...

  3. [LeetCode] 735. Asteroid Collision

    行星碰撞. 题意是给一个数组 asteroids,表示在同一行的行星.对于数组中的每一个元素,其绝对值表示行星的大小,正负表示行星的移动方向(正表示向右移动,负表示向左移动).每一颗行星以相同的速度移 ...

  4. Java 9 New Features

    Java 9 概述 1. jdk 9 的发布.经过 4 次跳票,历经曲折的 java 9 终于终于在 2017 年 9 月 21 日发布. 2. Java 9 中哪些不得不说的新特性?java 9 提 ...

  5. Attributes for Slot

    关于AP Config中的一些参数的意义: Radio Type................................... RADIO_TYPE_80211ac-5 Radio Subba ...

  6. 温湿度传感器AM2302(DH22)

    AM2302   3.3V - 5.5V,建议供电电压为 5V单总线通信模式时,SDA 上拉(开漏)后与微处理器的 I/O 端口相连.单总线通信特殊说明: 0.功耗待机40~50uA;测量1~1.5m ...

  7. 【PAT甲级】1056 Mice and Rice (25 分)

    题意: 输入两个正整数N和M(<=1000),接着输入两行,每行N个数,第一行为每只老鼠的重量,第二行为每只老鼠出战的顺序.输出它们的名次.(按照出战顺序每M只老鼠分为一组,剩余不足M只为一组, ...

  8. JIRA 安装与破解 Mac版

    1.安装 JDK 2.安装 MySQL 下载地址:https://dev.mysql.com/downloads/ 选择对应版本下载安装.我选择的是 mysql-8.0.11-macos10.13-x ...

  9. vue 和 jquery混合使用

    有时候只要想到要用的 vue.js 的时候就会惯性的想起用vue-cli手脚架搭建一个项目,但是有时候的业务场景并不适合用vue-cli手脚架,这个时候使用vue+jquery混合使用,把他们的优点结 ...

  10. 大数据篇:MapReduce

    MapReduce MapReduce是什么? MapReduce源自于Google发表于2004年12月的MapReduce论文,是面向大数据并行处理的计算模型.框架和平台,而Hadoop MapR ...