Paddle动态图如何不记录梯度的给variable赋值

euoag5mw  于 2022-10-20  发布在  其他
关注(0)|答案(4)|浏览(189)

例如我有两个variable x和y,我想将y的值赋给x,并且不记录这个过程的梯度值
在Pytorch中有:

x.data.copy_(y.data)

paddle该怎么实现这个操作呢?

a8jjtwal

a8jjtwal1#

paddle有一个assign的操作,可以看看是否满足要求,也可以将一个tensor的值直接赋值给另外一个tensor。

qnzebej0

qnzebej02#

paddle有一个assign的操作,可以看看是否满足要求,也可以将一个tensor的值直接赋值给另外一个tensor。

assign会传递梯度,如果x的网络反向传播了,y也会有梯度,希望是不会有这样的影响
tensor直接复制的方法能否说的详细一点,动态图的variable似乎不能作为左值?

iezvtpos

iezvtpos3#

x = y.detach() 你看看 是否能满足需求。 x的值会跟y一样,但是梯度不会回传

kknvjkwl

kknvjkwl4#

x = y.detach() 你看看 是否能满足需求。 x的值会跟y一样,但是梯度不会回传

如果x和y是parameter呢,x=y.detach()不生效,调试发现x的值未变,代码如下:

for x, y in zip(model_a.parameters(), model_b.parameters()):
    x = y.detach()

有其他方法进行赋值吗?

相关问题