方法一:手动计算变量的梯度,然后更新梯度

import torch

from torch.autograd import Variable

# 定义参数

w1 = Variable(torch.FloatTensor([1,2,3]),requires_grad = True)

# 定义输出

d = torch.mean(w1)

# 反向求导

d.backward()

# 定义学习率等参数

lr = 0.001

# 手动更新参数

w1.data.zero_() # BP求导更新参数之前,需先对导数置0

w1.data.sub_(lr*w1.grad.data)

一个网络中通常有很多变量,如果按照上述的方法手动求导,然后更新参数,是很麻烦的,这个时候可以调用torch.optim

方法二:使用torch.optim

import torch

from torch.autograd import Variable

import torch.nn as nn

import torch.optim as optim

# 这里假设我们定义了一个网络,为net

steps = 10000

# 定义一个optim对象

optimizer = optim.SGD(net.parameters(), lr = 0.01)

# 在for循环中更新参数

for i in range(steps):

optimizer.zero_grad() # 对网络中参数当前的导数置0

output = net(input) # 网络前向计算

loss = criterion(output, target) # 计算损失

loss.backward() # 得到模型中参数对当前输入的梯度

optimizer.step() # 更新参数

注意:torch.optim只用于参数更新和对参数的梯度置0,不能计算参数的梯度,在使用torch.optim进行参数更新之前,需要写前向与反向传播求导的代码

以上这篇Pytorch反向求导更新网络参数的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

pythonmath反三角函数的导数_Pytorch反向求导更新网络参数的方法相关推荐

  1. 使用pytorch构建一个神经网络、损失函数、反向传播、更新网络参数

    关于torch.nn: 使用Pytorch来构建神经网络, 主要的工具都在torch.nn包中. nn依赖于autograd来定义模型, 并对其自动求导. 构建神经网络的典型流程: 定义一个拥有可学习 ...

  2. DL之BP:利用乘法层/加法层(forward+backward)算法结合计算图(CG)求解反向求导应用题

    DL之BP:利用乘法层/加法层(forward+backward)算法结合计算图(CG)求解反向求导应用题 导读 计算图中层的实现(加法层/乘法层),其实非常简单,使用这些层可以进行复杂的导数计算.可 ...

  3. pythonmath反三角函数的导数_Python求离散序列导数的示例

    有一组4096长度的数据,需要找到一阶导数从正到负的点,和三阶导数从负到正的点,截取了一小段. 394.0 388.0 389.0 388.0 388.0 392.0 393.0 395.0 395. ...

  4. 两边同时取对数求复合函数_【函数与导数】复合函数求导的几个妙用

    已经消失一段时间了~ 最近开始学习导数,接触到了一些比较神奇的结论和方法. 如果有时间的话,会慢慢归类整理上来. 复合函数求导是高考中必须掌握的东西,内容如下:设 ,对 求导得: 而用复合函数求导法可 ...

  5. java求导数_OO_JAVA_表达式求导

    OO_JAVA_表达式求导_第一弹 ---------------------------------------------------表达式提取部分 词法分析 ​ 首先,每一个表达式内部都存在不可 ...

  6. AI笔记: 数学基础之函数的导数应用及求导公式

    关于导数 导数是数学中非常重要的概念,它能反应出速度变化的快慢,尤其在AI的算法分析,优化以及数据挖掘中用到很多 导数的引出 引例1 变速直线运动的速度 s是距离,t是时间,v是速度 设描述指点运动的 ...

  7. 人工智能高等数学--微积分_导数意义_求导公式_绝对值函数_relu函数_导数物理意义_几何意义---人工智能工作笔记0025

    实际上这里看了看,这些数学的概念,有一定作用,但是综合来看,也可以先把人工智能课程都看一遍,大概知道怎么回事, 带着目的再来看人工智能的高等数学部分,这里,这些内容很花时间... 首先看人工智能用到的 ...

  8. 用神经网络学习Fe原子光谱并反向求导计算权重

    首先构造一个1*26*26的神经网络 根据铁的发射光谱 强度 * 波长10^-10m * 归一化 1000 P 2483.2708 y0 0.566498 600 P 2488.1426 y1 0.5 ...

  9. python编程求导数_面向对象编程 —— java实现函数求导

    首先声明一点,本文主要介绍的是面向对象(OO)的思想,顺便谈下函数式编程,而不是教你如何准确地.科学地用java求出函数在一点的导数. 一.引子 defd(f) :defcalc(x) : dx= 0 ...

最新文章

  1. 【Android 逆向】使用 Python 编写 APK 批处理分析工具
  2. Oracle数据库的视图
  3. python 加密解密_python加密解密
  4. 计算机网路【2】数据链路层
  5. CentOS设置网卡成DHCP动态获取IP
  6. 两个大整数相乘 C++ 版本 源码
  7. MaxScale Binlog Server实践
  8. 德赛西威280b升级_牵手英伟达/德赛西威 理想自动驾驶蓝图初现
  9. 由入门C语言题目浅析gets()函数的用法
  10. AM3352时钟系统分析
  11. Server2003安装SQL2000企业版
  12. openCV实践项目:银行卡卡号识别
  13. Lesson 40 Food and talk 进餐与交谈
  14. springboot整合bboss操作elasticsearch
  15. Oracle数据库账号被锁了怎么解锁
  16. 桥式滤波整流电路仿真MATLAB,基于Matlab/Simulink的整流滤波电路的建模与仿真
  17. 代号“凤凰”,阿里新零售秘密武器,今年要打入100个城市...
  18. DHU数据结构-单链表-ADT应用-长整数加法运算(使用单链表存储计算结果)
  19. html number输入框限制只能输入正整数或两位小数的正数
  20. 前端程序员必备的 6 个浏览器插件!

热门文章

  1. 全局手动捕获崩溃异常错误CrashHandler【工具类直接可用】
  2. C++左值、右值、左值引用、右值引用
  3. 前后端数据交互——ajax技术
  4. 背包问题(贪心算法)
  5. 基于jeesite+android开发 电子商务系统免费教程
  6. 想做钢铁侠?听说很多大佬都是用它入门的
  7. 使用UltraISO制作u盘启动盘,系统引导光盘(CD/DVD)制作
  8. android 5.0儿童模式,三星Galaxy S5如何进入儿童模式
  9. 语音增强、识别、评测常用噪声库、数据集
  10. 360安全卫士设置备份