model 在前向计算时,如果把mxnet的ndarray转换成numpy(asnumpy())会妨碍生成computational graph吗?

model 在前向计算时,训练在gpu上进行,在前向计算过程中存在把mxnet.ndarray(也在gpu上)转换成numpy(比如 asnumpy())操作,会不会导致computational graph生成失败? 我记得numpy只有在cpu上运行,所以想确认一下。

个人浅见:在前向计算时asnumpy这个操作会导致在gpu上的computational graph生成失败,asnumpy之后,数据转移到了cpu上,导致gpu上的backward错误,所以尽量使用mxnet内部的操作。

应该不行,还有之前遇到过生成计算图的问题:

class MyBlock(nn.Block):
...
    def forward(x):
          residual = x
          ...
          x = self.conv(x)
          x += residual   # 也会生成计算图失败
          y = x + residual  #这样才行