autograd相关内容

autograd.grad和autograd之间的区别。向后?

假设我有我的客户损失函数,并且我想借助我的神经网络来拟合某个微分方程的解。因此,在每一次正向传递中,我都在计算我的神经网络的输出,然后通过将MSE与我想要与感知器匹配的预期方程相乘来计算损失。 现在我的疑问是:我应该使用grad(loss)还是应该使用loss.backward()进行反向传播来计算和更新渐变? 我知道在使用loss.backward()时,我必须用变量包装张量,并且必 ..
发布时间:2022-02-23 10:09:05 其他开发

PyTorch autograd -- 只能为标量输出隐式创建 grad

我在 PyTorch 中使用了 autograd 工具,并且发现自己需要通过整数索引访问一维张量中的值.像这样: def basic_fun(x_cloned):资源 = []对于范围内的 i(len(x)):res.append(x_cloned[i] * x_cloned[i])打印(资源)返回变量(torch.FloatTensor(res))def get_grad(inp, grad_ ..
发布时间:2022-01-06 19:47:32 Python

为什么 autograd 不为中间变量产生梯度?

试图围绕渐变的表示方式以及 autograd 的工作原理: 导入火炬从 torch.autograd 导入变量x = 变量(torch.Tensor([2]), requires_grad=True)y = x * xz = y * yz.backward()打印(x.grad)#变量包含:#32#[大小为1的torch.FloatTensor]打印(y.grad)#没有任何 为什么它不会为 ..
发布时间:2022-01-06 19:35:23 其他开发

Autograd.grad() 用于 pytorch 中的 Tensor

我想计算网络中两个张量之间的梯度.输入 X 张量(批量大小 x m)通过一组卷积层发送给我,然后输出 Y 张量(批量大小 x n). 我正在创建一个新的损失,我想知道 Y w.r.t. 的梯度.X. tensorflow 中的一些东西: tf.gradients(ys=Y, xs=X) 不幸的是,我一直在使用 torch.autograd.grad() 进行测试,但我不知道如何去 ..
发布时间:2022-01-06 19:33:28 其他开发

PyTorch 的 torch.autograd.grad 中 grad_outputs 的含义

我无法理解 grad_outputs 选项的概念含义rel="nofollow noreferrer">torch.autograd.grad. 文档说: grad_outputs 应该是一个长度匹配输出的序列,包含雅可比向量乘积中的“向量",通常是预先计算的梯度 w.r.t.每个输出.如果输出不是require_grad,那么梯度可以是None). 我觉得这个描述很神秘.雅可比 ..
发布时间:2022-01-06 19:27:24 其他开发

Pytorch - 运行时错误:试图再次向后浏览图表,但缓冲区已被释放

我一直遇到这个错误: 运行时错误:试图再次向后浏览图表,但缓冲区已被释放.第一次向后调用时指定retain_graph=True. 我已经在 Pytorch 论坛中搜索过,但仍然无法找出我在自定义损失函数中做错了什么.我的模型是 nn.GRU,这是我的自定义损失函数: def _loss(outputs, session, items): # `items` 是一个 dict() 包 ..

Pytorch Autograd:什么是运行时错误“只能为标量输出隐式创建grad"?吝啬的

我正在尝试深入了解 Pytorch autograd;我想通过如下 sigmoid 函数观察一个简单张量的梯度: 导入火炬从火炬进口 autogradD = torch.arange(-8, 8, 0.1, requires_grad=True)使用 autograd.set_grad_enabled(True):S = D.sigmoid()S.backward() 我的目标是获得 D.gr ..

使用Autograd的偏导数

我有一个接受多变量参数x的函数.这里x = [x1,x2,x3].假设我的函数如下所示: f(x,T)= np.dot(x,T)+ np.exp(np.dot(x,T),其中T是常数. 我对找到df/dx1,df/dx2和df/dx3函数很感兴趣. 我使用scipy diff取得了一些成功,但是我有点怀疑,因为它使用了数值差异.昨天,我的同事向我指出了Autograd (github) ..

使用自动微分库计算任意张量的偏导数

(注意:这不是有关反向传播的问题.) 我正在尝试在GPU上使用PyTorch张量代替Numpy数组来解决非线性PDE问题.我想计算任意张量的偏导数,类似于中心有限差分的作用我创建了numpy.gradient函数的张量兼容版本-运行速度快得多.但是,也许有更优雅的方法可以做到这一点.我找不到其他任何资料可以解决这个问题,无论是表明这是可能的还是不可能的.也许这反映了我对自动分化算法的无知. ..
发布时间:2020-05-18 21:05:50 Python

小型批量培训,用于输入可变大小

我有一个LongTensors列表和另一个标签列表.我是PyTorch和RNN的新手,所以对于如何对我的数据实施小批量培训我很困惑.这些数据还有很多,但我想保持简单,因此我只能理解如何实施微型批次培训部分.我正在基于在可变长度输入上训练的LSTM/GRU的最终隐藏状态进行多类分类.我设法使它以批处理大小1(基本上为SGD)工作,但是我在实现小型批次方面很挣扎. 我是否必须将序列填充到最大大小 ..
发布时间:2020-05-17 19:28:23 Python

如何在pytorch中手动应用渐变

开始学习pytorch,并尝试做一些非常简单的事情,尝试将大小为5的随机初始化向量移动到值为[1,2,3,4,5]的目标向量. 但是我的距离并没有减少!而我的向量x却发疯了.不知道我在想什么. import torch import numpy as np from torch.autograd import Variable # regress a vector to the go ..
发布时间:2020-05-06 11:51:42 其他开发

Pytorch-RuntimeError:尝试第二次向后浏览图形,但缓冲区已被释放

我一直遇到这个错误: RuntimeError:尝试第二次向后浏览图形,但缓冲区已被释放.第一次回叫时,请指定keep_graph = True. 我在Pytorch论坛中进行了搜索,但仍然无法确定自定义损失函数中做错了什么.我的模型是nn.GRU,这是我的自定义损失函数: def _loss(outputs, session, items): # `items` is a d ..