我有以下代码:
A = Tensor of [186,3]
如果我创建一个新的空张量,如下所示:
tempTens = torch.tensor(np.zeros((186,3)), requires_grad = True).cuda()
我在a的一个块上做了一些运算,然后把它输出到Tentens中,我完全用它来做进一步的计算,比如说:
tempTens[20,:] = SomeMatrix * A[20,:]
梯度真的会被正确地传递吗?假设我有一个成本函数,它优化了诱惑的输出,使之符合一些基本事实
Tags:
在这种情况下,
tempTens[20,:] = SomeMatrix * A[20,:]
是关于tempTens
的就地操作,通常不能保证使用autograd。但是,如果通过应用concatenation这样的操作来创建新变量在数学方面,您将得到相同的结果(一个矩阵包含
SomeMatrix * A[20, :]
的前20行和后面166行0),但这将在autograd中正常工作。一般来说,这是处理这类问题的正确方法。你知道吗相关问题 更多 >
编程相关推荐