autograd相关内容
假设我有我的客户损失函数,并且我想借助我的神经网络来拟合某个微分方程的解。因此,在每一次正向传递中,我都在计算我的神经网络的输出,然后通过将MSE与我想要与感知器匹配的预期方程相乘来计算损失。 现在我的疑问是:我应该使用grad(loss)还是应该使用loss.backward()进行反向传播来计算和更新渐变? 我知道在使用loss.backward()时,我必须用变量包装张量,并且必
..
在我之前的问题中,我发现了如何使用 PyTorch 的 autograd来区分.它奏效了: #autograd进口火炬从 torch.autograd 导入 grad将 torch.nn 导入为 nn导入 torch.optim 作为 optim类 net_x(nn.Module):def __init__(self):super(net_x, self).__init__()self.fc1=
..
我在 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_
..
试图围绕渐变的表示方式以及 autograd 的工作原理: 导入火炬从 torch.autograd 导入变量x = 变量(torch.Tensor([2]), requires_grad=True)y = x * xz = y * yz.backward()打印(x.grad)#变量包含:#32#[大小为1的torch.FloatTensor]打印(y.grad)#没有任何 为什么它不会为
..
我想计算网络中两个张量之间的梯度.输入 X 张量(批量大小 x m)通过一组卷积层发送给我,然后输出 Y 张量(批量大小 x n). 我正在创建一个新的损失,我想知道 Y w.r.t. 的梯度.X. tensorflow 中的一些东西: tf.gradients(ys=Y, xs=X) 不幸的是,我一直在使用 torch.autograd.grad() 进行测试,但我不知道如何去
..
第一季度. 我正在尝试使用 pytorch 制作我的自定义 autograd 函数. 但是我在使用 y = x/sum(x, dim=0) 进行分析反向传播时遇到了问题 其中张量 x 的大小是(高度,宽度)(x 是二维的). 这是我的代码 class MyFunc(torch.autograd.Function):@静态方法定义转发(ctx,输入):ctx.save_fo
..
我无法理解 grad_outputs 选项的概念含义rel="nofollow noreferrer">torch.autograd.grad. 文档说: grad_outputs 应该是一个长度匹配输出的序列,包含雅可比向量乘积中的“向量",通常是预先计算的梯度 w.r.t.每个输出.如果输出不是require_grad,那么梯度可以是None). 我觉得这个描述很神秘.雅可比
..
当最终张量中有多个值时可以使用 autograd 吗? 我尝试了以下方法. x = torch.tensor([4.0, 5.0], requires_grad=True)y = x ** 2打印(y)y.backward() 抛出错误 RuntimeError: grad 只能为标量输出隐式创建 但是以下有效. x = torch.tensor([4.0, 5.0], requi
..
我知道两种从梯度计算中排除计算元素的方法backward 方法一:使用with torch.no_grad() with torch.no_grad():y = 奖励 + gamma * torch.max(net.forward(x))损失=标准(net.forward(torch.from_numpy(o)),y)loss.backward(); 方法二:使用.detach()
..
我一直遇到这个错误: 运行时错误:试图再次向后浏览图表,但缓冲区已被释放.第一次向后调用时指定retain_graph=True. 我已经在 Pytorch 论坛中搜索过,但仍然无法找出我在自定义损失函数中做错了什么.我的模型是 nn.GRU,这是我的自定义损失函数: def _loss(outputs, session, items): # `items` 是一个 dict() 包
..
我对 pytorch 的向后功能有一些疑问,我认为我没有得到正确的输出: 将 numpy 导入为 np进口火炬从 torch.autograd 导入变量a = Variable(torch.FloatTensor([[1,2,3],[4,5,6]]), requires_grad=True)输出 = a * aout.backward(a)打印(a.grad) 输出是 tensor([[ 2
..
我正在尝试深入了解 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
..
我有一个接受多变量参数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函数的张量兼容版本-运行速度快得多.但是,也许有更优雅的方法可以做到这一点.我找不到其他任何资料可以解决这个问题,无论是表明这是可能的还是不可能的.也许这反映了我对自动分化算法的无知.
..
我有一个LongTensors列表和另一个标签列表.我是PyTorch和RNN的新手,所以对于如何对我的数据实施小批量培训我很困惑.这些数据还有很多,但我想保持简单,因此我只能理解如何实施微型批次培训部分.我正在基于在可变长度输入上训练的LSTM/GRU的最终隐藏状态进行多类分类.我设法使它以批处理大小1(基本上为SGD)工作,但是我在实现小型批次方面很挣扎. 我是否必须将序列填充到最大大小
..
开始学习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
..
我一直遇到这个错误: RuntimeError:尝试第二次向后浏览图形,但缓冲区已被释放.第一次回叫时,请指定keep_graph = True. 我在Pytorch论坛中进行了搜索,但仍然无法确定自定义损失函数中做错了什么.我的模型是nn.GRU,这是我的自定义损失函数: def _loss(outputs, session, items): # `items` is a d
..
我对pytorch的向后功能有些疑问,我认为我没有得到正确的输出 import numpy as np import torch from torch.autograd import Variable a = Variable(torch.FloatTensor([[1,2,3],[4,5,6]]), requires_grad=True) out = a * a out.backward
..