例如我有两个variable x和y,我想将y的值赋给x,并且不记录这个过程的梯度值在Pytorch中有:
x.data.copy_(y.data)
paddle该怎么实现这个操作呢?
a8jjtwal1#
paddle有一个assign的操作,可以看看是否满足要求,也可以将一个tensor的值直接赋值给另外一个tensor。
qnzebej02#
assign会传递梯度,如果x的网络反向传播了,y也会有梯度,希望是不会有这样的影响tensor直接复制的方法能否说的详细一点,动态图的variable似乎不能作为左值?
iezvtpos3#
x = y.detach() 你看看 是否能满足需求。 x的值会跟y一样,但是梯度不会回传
kknvjkwl4#
如果x和y是parameter呢,x=y.detach()不生效,调试发现x的值未变,代码如下:
for x, y in zip(model_a.parameters(), model_b.parameters()): x = y.detach()
有其他方法进行赋值吗?
4条答案
按热度按时间a8jjtwal1#
paddle有一个assign的操作,可以看看是否满足要求,也可以将一个tensor的值直接赋值给另外一个tensor。
qnzebej02#
paddle有一个assign的操作,可以看看是否满足要求,也可以将一个tensor的值直接赋值给另外一个tensor。
assign会传递梯度,如果x的网络反向传播了,y也会有梯度,希望是不会有这样的影响
tensor直接复制的方法能否说的详细一点,动态图的variable似乎不能作为左值?
iezvtpos3#
x = y.detach() 你看看 是否能满足需求。 x的值会跟y一样,但是梯度不会回传
kknvjkwl4#
x = y.detach() 你看看 是否能满足需求。 x的值会跟y一样,但是梯度不会回传
如果x和y是parameter呢,x=y.detach()不生效,调试发现x的值未变,代码如下:
有其他方法进行赋值吗?