在 Python 当中的函数调用当中, numpy 和 torch.tensor 都 是按照 引用传递 传到函数里面的,也就是说 修改 传入函数的 形参,也会导致 未传入之前的形参 发生 变化。
position 是一个 tensor; 下面这段代码第一行,如果在函数里面修改 position 会导致 下面的 position 也会发生变化
python
## 两段代码都用到 position 这个变量
gt_semantics = self.Occ3d.get_occ3d_gt(position_w=position)
gt_semantics = self.Occ3d.get_occ3d_gt(position_w=position.clone())
pred_semantics = self.Occ3d.get_pos_pred_semantics(position=position)
在第二行加上 clone 函数 之后,才可以保证执行完 第二行之后 的 position 的数值不会发生变换。