pytorch通过易失性变量反向传播错误

2024-03-24

我试图通过多次向后传递迭代来运行它并在每个步骤更新输入,从而最小化相对于某个目标的一些输入。第一遍运行成功,但在第二遍时出现以下错误: RuntimeError: element 0 of variables tuple is volatile

这段代码片段演示了这个问题

import torch
from torch.autograd import Variable
import torch.nn as nn

inp = Variable(torch.Tensor([1]), requires_grad=True)
target = Variable(torch.Tensor([3]))

loss_fn = nn.MSELoss()

for i in range(2):
    loss = loss_fn(inp, target)
    loss.backward()
    gradient = inp.grad
    inp = inp - inp.grad * 0.01

当我检查的值inp,在最后一行重新分配之前,inp.volatile => False and inp.requires_grad => True但在重新分配后,这些切换到True and False, 分别。为什么作为一个易失性变量会阻止第二次反向传播运行?


您必须在每次更新之前将梯度归零,如下所示:

inp.grad.data.zero_()

但在你的代码中,每次更新渐变时,你都会创建另一个渐变Variable对象,因此您必须像这样更新整个历史记录:

import torch
from torch.autograd import Variable
import torch.nn as nn

inp_hist = []
inp = Variable(torch.Tensor([1]), requires_grad=True)
target = Variable(torch.Tensor([3]))

loss_fn = nn.MSELoss()

for i in range(2):
    loss = loss_fn(inp, target)
    loss.backward()
    gradient = inp.grad
    inp_hist.append(inp)
    inp = inp - inp.grad * 0.01
    for inp in inp_hist:
        inp.grad.data.zero_()

但是这样你将计算你在历史记录中创建的所有先前输入的梯度(这很糟糕,这是浪费一切),正确的实现如下所示:

import torch
from torch.autograd import Variable
import torch.nn as nn
inp = Variable(torch.Tensor([1]), requires_grad=True)
target = Variable(torch.Tensor([3]))
loss_fn = nn.MSELoss()
for i in range(2):
    loss = loss_fn(inp, target)
    loss.backward()
    gradient = inp.grad
    inp.data = inp.data - inp.grad.data * 0.01
    inp.grad.data.zero_()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pytorch通过易失性变量反向传播错误 的相关文章

  • 隐藏控制台并执行 python 脚本

    我正在尝试使用 pyinstaller 在 Windows 10 上使用 pyqt5 模块编译在 python 3 中构建的 python 脚本 该脚本在运行时隐藏窗口 为了编译我的脚本 我执行了以下命令 pyinstaller onefi
  • MySQL 的 read_sql() 非常慢

    我将 MySQL 与 pandas 和 sqlalchemy 一起使用 然而 它的速度非常慢 对于一个包含 1100 万行的表 一个简单的查询需要 11 分钟以上才能完成 哪些行动可以改善这种表现 提到的表没有主键 并且仅由一列索引 fro
  • 日期/时间值的 Django URL 转换器

    我正在尝试使用 Django 内置的 URL 转换器将 URL 中的日期时间字符串转换为视图中的日期对象 如果我手动输入 URL 它们会按预期工作 但尝试为其生成 URL 时找不到匹配项 我的转换器很简单 from django utils
  • 可视化时间序列时标记特定日期

    我有一个包含几年数据的时间序列 例如 ts pd Series np random randn 1000 index pd date range 1 1 2000 periods 1000 ts ts cumsum ts plot 我还有两
  • 从 SQL Server 中调用 Python 文件

    我的文件名中有 Python 脚本 C Python HL py 在此 Python 脚本中 有预测模型以及对 SQL 数据库中某些表的更新 我想将此文件称为 SQL 作业 我怎样才能做到这一点 这个问题不一样 如何在 SQL Server
  • python: X 服务器上的致命 IO 错误 11(资源暂时不可用):0.0

    我正在尝试读取一些图像 稍后打算对它们执行一些任务 同时将图像读入内存 我想显示动画 gif 图像 为此 我必须使用线程 现在它给出错误 python Fatal IO error 11 Resource temporarily unava
  • 映射器无法组装任何主键列

    我从 sqlite 表创建了一个临时表 该表是基于各种选择标准的原始表的子集 屏幕截图中有一个示例 我试图一次循环一个表记录 以便更新每个记录中的字段 我有 source table self source engine create en
  • 将带有非字符串关键字的 dict 传递给 kwargs 中的函数

    我使用具有签名功能的库f args kwargs 我需要在 kwargs 参数中传递 python dict 但 dict 不包含关键字中的字符串 f 1 2 3 4 Traceback most recent call last File
  • Flask-httpauth: get_password 装饰器如何为 basic-auth 工作?

    我想知道有没有人用过这个烧瓶延伸 https github com miguelgrinberg flask httpauth简化 http basic auth 基本上我不明白这个example https github com migu
  • 可重用的 Tensorflow 卷积网络

    我想重用来自Tensorflow 专业人士的 MNIST CNN 示例 http www tensorflow org tutorials mnist pros index md 我的图像尺寸为 388px X 191px 只有 2 个输出
  • 在Python中随机化列表[重复]

    这个问题在这里已经有答案了 我想知道是否有一个好方法来 震动 Python 中的项目列表 例如 1 2 3 4 5 可能会被动摇 随机化 3 1 4 2 5 任何顺序都同样可能 from random import shuffle list
  • Python 中 Goto 标签的替代方案?

    我知道我不能使用 Goto 我也知道 Goto 不是答案 我读过类似的问题 但我只是想不出解决我的问题的方法 所以 我正在编写一个程序 你必须在其中猜测一个数字 这是我遇到问题的部分的摘录 x random randint 0 100 I
  • 如何将 Jinja 与 Twisted 一起使用?

    我正在计划使用 Python 与 Twisted Storm 和 Jinja 一起开发一个讨论软件 问题是 Jinja 不是为 Twisted 或异步套接字库而设计的 并且使用 Twisted 提供的性能是我不打算使用 Flask 的原因
  • __subclasses__ 没有显示任何内容

    我正在实现一个从适当的子类返回对象的函数 如果我搬家SubClass from base py 没有出现子类 subclasses 它们必须在同一个文件中吗 也许我从来没有直接导入subclass py对Python隐藏子类 我能做些什么
  • 可变和不可变类变量如何初始化?

    运行下面的示例代码 class S i 0 a def init self self i 1 self a append 1 s1 S print s1 i s1 a s2 S print s2 i s2 a 输出将是 1 1 1 1 1
  • 在 Python 中将 int 转换为 ASCII 并返回

    我正在为我的网站制作一个 URL 缩短器 我当前的计划 我愿意接受建议 是使用节点 ID 来生成缩短的 URL 因此 理论上 节点 26 可能是short com z 节点 1 可能是short com a 节点 52 可能是short c
  • Tensorflow:提要字典错误:您必须为占位符张量提供值

    我有一个错误 我无法找出原因 这是代码 with tf Graph as default global step tf Variable 0 trainable False images tf placeholder tf float32
  • 在Python中计算矩阵乘以其转置(AA^T)的最快方法

    在Python中将矩阵与其转置 AA T 相乘的最快方法是什么 我认为 NumPy SciPy 没有考虑使用例如时涉及的对称性 np dot or np matmul 得到的矩阵总是对称的 所以我可以想象有一个更快的解决方案 None
  • 如何在特定时间启动Tornado周期性回调?

    目前在我的 Tornado 应用程序中 我正在使用定期调用回调PeriodicCallback每隔一小时 像这样 import tornado ioloop from tornado ioloop import PeriodicCallba
  • 用于获取有关 SVN 存储库信息的 Python 库?

    我正在寻找一个可以从 SVN 存储库中提取 至少 以下信息的库 not工作副本 修订号及其作者和提交消息 每个修订版中的更改 添加 删除 修改文件 有Python库可以做到这一点吗 对于作者和提交消息 我可以解析 db revprops 0

随机推荐

  • 如何在d3中增量绘制网格?

    下面是一个 HTML 文件 它将绘制一个 10x10 的浅灰色和深灰色交替的正方形网格 它填充一个名为的二维数组the grid与 0 或 1 然后填充一个名为的一维数组nodes with x y and color 然后画nodes与
  • JUnitCore 停止

    我想停止 销毁正在运行的 JUnitCore 它的启动方式是 JUnitCore run Request aClass ClassToRun Like pleaseStop 在 RunNotifier 上 有任何想法吗 http junit
  • ajax 请求后重新加载 dojo 小部件

    我是这个主题的新手 我有 div 里面有一些 dojo 小部件 我使用 ajax 重新加载这个 div 但是之后我的 dojo 小部件没有显示 我怎样才能让我的浏览器在ajax请求后再次重新加载小部件 我不想重新加载整个页面 我的ajax视
  • Polymer 2.0:通知并反映到属性

    我是这个框架的新手 希望看到一些有用且简单的通知和反映属性属性的示例 请保持示例简单或为您提供的任何代码添加解释 Notify 可以设置为 True False 假设你有parent element and child element 工作
  • python 的斯坦福大学 nlp

    我想做的就是找到任何给定字符串的情绪 积极 消极 中性 在研究过程中 我遇到了斯坦福 NLP 但遗憾的是它是在 Java 中 关于如何让它适用于 python 有什么想法吗 Use py corenlp https github com s
  • 线程实现(C#)

    您能给我一个使用线程的程序的简单示例吗 我不明白线程及其使用以及何时使用它 谢谢 有一个here http msdn microsoft com en us library aa645740 28VS 71 29 aspx 和一个非常简单的
  • 创建一个 python 服务器以使用套接字向 Android 应用程序发送数据

    我正在尝试使用 python 中的套接字 我的电脑 创建一个简单的聊天服务器程序来与我的 Android 客户端代码 我的 Android 手机 进行通信 我有一个简单的服务器代码 它接收消息 但当我尝试从服务器向客户端发送消息时 它会阻止
  • 在新订单电子邮件通知中获取客户订单数

    如果是回头客 我想在 WooCommerce 新订单 电子邮件通知中注明 看起来很简单 但我尝试了大约 5 种不同的方法 但没有一个有效 我尝试将其放入两个不同的钩子中 woocommerce email after order table
  • BigIntegers、gcd、模逆来查找公钥

    所以 我使用 java 来查找 RSA 密码的公钥 现在我不确定我在做什么 也不确定它是否正确 我有公钥的信息 C 5449089907 n p q 8271344041 q 181123 p n q 45667 d 53 phi n p
  • 如何使服务器发送事件(SSE)通过 Zuul 代理 spring-boot 2.1.1 工作

    我在通过 zuul 反向代理让 SSE 工作时遇到一些问题 我的设置 Spring boot version 2 1 1 RELEASE Spring cloud dependencies Greenwich RC1 Angular cli
  • 不带参数的变量范围

    Example 我有以下代码块 if int TryParse 123 out var parsedNumber return Console WriteLine parsedNumber 控制台的输出是 123 问题 怎么可能 这条线Co
  • 目标 c:检查是否是整数/整数/数字

    在 Objective C 中 我如何检查字符串 NSNumber 是整数还是 int 如果您想确定是否NSString是否有数值 尝试使用NSNumberFormatter BOOL stringIsNumeric NSString st
  • 从 System.DirectoryServices 切换到 DirectoryServices.Protocols 时的身份验证类型

    我需要知道 AuthenticationTypes 中的等效 AuthType 值 才能从 S DS 迁移到 S DS P 代码 我正在重写当前使用 System DirectoryServices 命名空间的 LDAP 连接模块 为了提高
  • 如何在 C# Excel Interop 中格式化公式结果?

    我有这段代码 用于对给定范围内的值进行求和 Column O Row 10 到 Column O 最后一个有效行 Note 那是字母 O 而不是数字 零 var totalTotalPackageCountCell Range xlShee
  • 复制单元格背景颜色并将其粘贴到另一张工作表的相应单元格中

    我在工作表 1 上有值 并使用条件格式指定了背景颜色 我只想复制颜色并将其粘贴到工作表 2 的相应单元格中 而不粘贴值 例如 如果工作表 1 单元格 A1 的特定值为红色 则将该颜色转移到工作表 2 A1 我使用两种颜色 红色和白色 红色代
  • 如何修复“页面尝试从未经身份验证的源加载脚本”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 编辑问题以包括期望的行为 特定问题或错误以及重现问题所需的最短代码 help minimal reproducible example 这
  • ES2017 Figma 插件中的 Typescript 标记错误

    工具 Visual Studio代码 项目类型 node js 尝试 编译和构建https github com brianlovin figma export zip https github com brianlovin figma e
  • PhoneGap ios 固定虚拟键盘上的输入字段

    正在使用 jquery Mobile 创建一个phonegap 应用程序 在我的应用程序中 固定输入字段出现在虚拟键盘的顶部 这在 android 中工作正常 但在 IOS 中 当虚拟键盘出现时它不起作用 我的问题比这个小IOS 修复了虚拟
  • Vue JS:如何从 vue 组件访问和更改 CSS 根变量以切换 CSS 变量站点主题?

    我想在 Vue 组件中访问项目中 css 根变量的值 例如 通过按按钮更改 10 个变量 包括颜色 边距和字体大小 然后按同一按钮将变量更改为其 默认 原始值 实际上是更改值项目中的 css 根变量 我怎样才能做到这一点 事实上 我想通过按
  • pytorch通过易失性变量反向传播错误

    我试图通过多次向后传递迭代来运行它并在每个步骤更新输入 从而最小化相对于某个目标的一些输入 第一遍运行成功 但在第二遍时出现以下错误 RuntimeError element 0 of variables tuple is volatile