为什么应该仅在 1 个元素张量上或使用变量的梯度来调用向后函数?

2023-12-21

我是 pytorch 的新手。我想了解为什么我们不能对包含大小为 [2,2] 的张量的变量调用后向函数。 如果我们确实想在包含大小为 [2,2] 的张量的变量上调用它,我们必须首先定义一个梯度张量,然后在包含张量 w.r.t 定义的梯度的变量上调用后向函数。


从教程开始autograd

如果你想计算导数,你可以调用 .backward() 多变的。如果 Variable 是一个标量(即它保存一个元素数据), 你不需要为backward()指定任何参数,但是如果它 有更多元素,您需要指定一个 grad_output 参数,即 匹配形状的张量。

基本上,要启动链式法则,您需要在输出处有一个梯度,才能使其运行。如果输出是标量损失函数(通常是这样 - 通常您在损失变量处开始向后传递),则其隐含值为 1.0

来自教程:

现在让我们 backprop out.backward() 相当于做 out.backward(torch.Tensor([1.0]))

但也许你只想更新一个子图(网络深处的某个地方)......以及 a 的值Variable是权重矩阵。然后你必须告诉它从哪里开始。来自他们的一位首席开发人员(链接中的某处)

对,那是正确的。我们只支持标量微分 函数,所以如果你想向后开始形成一个非标量值 你需要提供dout / dy

梯度参数

https://discuss.pytorch.org/t/how-the-backward-works-for-torch-variable/907/8 https://discuss.pytorch.org/t/how-the-backward-works-for-torch-variable/907/8好的解释

Pytorch,什么是梯度参数 https://stackoverflow.com/questions/43451125/pytorch-what-are-the-gradient-arguments很好的解释

http://pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html http://pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html教程

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么应该仅在 1 个元素张量上或使用变量的梯度来调用向后函数? 的相关文章

随机推荐

  • 使用 Intel MKL 的 3D 卷积

    我正在尝试使用 Intel 计算 3D 阵列的 3D 卷积MKL 有人可以给我一些提示吗 是否可以使用实现MKL 提前致谢 英特尔有他们页面上的示例 https software intel com en us node 4713903D
  • C# StreamReader,用于自定义分隔符的“ReadLine”

    拥有该功能的最佳方式是什么StreamReader ReadLine 方法 但带有自定义 字符串 分隔符 我想做这样的事情 String text while text myStreamReader ReadUntil my delim n
  • 如何使用提示(如简单的计算器)对数字求和? [复制]

    这个问题在这里已经有答案了 我尝试使用 JavaScript 来做一件非常简单的事情 一个百分比计算器 这是代码 var num prompt What is the number var perc prompt What is the p
  • 在 C# 中通过网络发送大文件的好方法?

    我正在尝试构建一个应用程序 该应用程序可以从网络中另一台计算机上运行的服务请求文件 这些文件可能相当大 有时 500mb 以上 我正在考虑通过 TCP 发送它 但我担心它可能需要将整个文件存储在内存中 可能只有一个客户 复制到共享目录也是不
  • 反应本机地铁是节点模块中缺少路径

    错误是这样的 Error Unable to resolve module metro src lib bundle modules HMRClient Here is additional error logs 当我必须创建一个新项目并运
  • 捕获 dll 异常后访问冲突

    我必须在运行时动态地将模块加载为 dll 因为它们事先并不知道 只是它们符合类接口 我注意到的是 在我捕获 dll 抛出的异常 在主线程的主程序中 后 会调用正确的析构函数 并销毁模块并卸载 dll 但随后作为 catch 块末尾的 当 V
  • 如何将 thenAnswer 与返回 void 的方法一起使用

    我想对以下方法进行单元测试 public void addRecord Record record Myclass newObj new Mycalss It creates newObj object set some values us
  • ORA-01000: 使用 Spring SimpleJDBCCall 时超出最大打开游标数

    我们使用 Spring SimpleJdbcCall 来调用 Oracle 中返回游标的存储过程 看起来 SimpleJdbcCall 没有关闭游标 并且在一段时间后超出了最大打开游标数 ORA 01000 maximum open cur
  • bash 中的 stdout 重定向与使用 fprintf 写入 c 中的文件(速度)

    我想知道哪个选项基本上更快 我最感兴趣的是重定向机制 我怀疑该文件是在程序启动时打开的 program gt file并在最后关闭 因此 每次程序输出一些内容时 都应该将其写入文件 就像听起来一样简单 是这样吗 那么我想这两种选择在速度方面
  • 如何为 WCF REST C# 站点设置 oAuth 身份验证

    我正在使用 VS 2010 在线模板的 WCF REST 服务模板 40 CS 制作一个网站 它工作得很好 但我需要保护它 我需要支持 Windows Linux 和 iPhone 应用程序 因此 REST oAuth 似乎是一个很好的解决
  • wp_list_comments() 不起作用

    我从头开始创建了一个自定义主题 没有什么花哨的简单主题 我目前使用的是 WordPress 3 2 1 我把wp list comments 放在comments php中来列出评论 它根本不起作用 没有显示评论 尝试将其放入 single
  • 无法启动服务应用程序:OCI 运行时创建失败:container_linux.go:349

    当我尝试使用 docker 启动 go 应用程序时遇到一些麻烦 ERROR for app Cannot start service app OCI runtime create failed container linux go 349
  • 在 jquery 中使表行可点击,但表头不可点击

    目前我正在使用 mytable tr click function blah blah 这使得所有行 包括标题 都可单击 如何排除标题或 th s 使用将标题和正文分开 thead and tbody 标签 并将选择器更改为 mytable
  • 以编程方式找出谁对我们的 iPhone 应用程序给予了 5 星评级

    我看到很多应用程序都说 如果您给我们的应用程序评分 5 星 您将获得 1000 个金币 用户可以在下载的应用程序中使用这些硬币 我想实现相同的功能 我们如何以编程方式确定谁对我们的 iPhone 应用程序给予了 5 星评级 以便我们可以在他
  • 安装nodejs后未定义require

    首先我从下载了node jslink https nodejs org en 然后我安装了browserifynpm install g browserify 然后我安装了fsnpm install fs 我收到以
  • 将 FindBugs 配置从 Sonar 导入到 Maven

    如何使用 Sonar 中的 FindBugs 配置文件作为规则集Maven FindBugs 插件 https gleclaire github io findbugs maven plugin 您可以放置 您的文件 即findbugs s
  • 非常大且非常稀疏的非负矩阵分解

    我有一个非常大且稀疏的矩阵 531K x 315K 单元格总数约为 1670 亿 非零值仅为 1s 非零值总数约为 45K 有高效的 NMF 包来解决我的问题吗 我知道有几个软件包可以实现这一点 并且它们仅适用于小尺寸的数据矩阵 任何想法都
  • WPF 将父绑定对象传递给转换器

    我有 ItemsControl 绑定到 Student 类型的集合 在 ItemTemplate 内部 我有一个 TextBox 它使用 IValueConverter 来执行一些自定义计算和逻辑 我想将实际的 Student 对象传递给值
  • 如何使用jquery在加载时滑动整个页面

    我想在更改时将整个页面向下滑动 我想做到这一点的方法是创建一个垂直幻灯片 在单击链接时播放 并在页面加载时再次播放 到目前为止 我只能创建影响特定 DIV 的幻灯片 我还希望它能够垂直滑入 任何想法将不胜感激 只需将所有内容包装在一个 di
  • 为什么应该仅在 1 个元素张量上或使用变量的梯度来调用向后函数?

    我是 pytorch 的新手 我想了解为什么我们不能对包含大小为 2 2 的张量的变量调用后向函数 如果我们确实想在包含大小为 2 2 的张量的变量上调用它 我们必须首先定义一个梯度张量 然后在包含张量 w r t 定义的梯度的变量上调用后