代码环境是windows,报错的定位是这里 File "D:\Codes\VRCNet-pytorch\models\vrcnet.py", line 461, in forward o_x = self.posterior_infer2(self.posterior_infer1(feat_x)) File "D:\Software\Anaconda\envs\VRCNetPT\lib\site-packages\torch\nn\modules\module.py", line 1102, in _call_impl return forward_call(*input, **kwargs) File "D:\Codes\VRCNet-pytorch\models\vrcnet.py", line 99, in forward x = self.conv1(self.af(feature)) File "D:\Software\Anaconda\envs\VRCNetPT\lib\site-packages\torch\nn\modules\module.py", line 1102, in _call_impl return forward_call(*input, **kwargs) File "D:\Software\Anaconda\envs\VRCNetPT\lib\site-packages\torch\nn\modules\activation.py", line 98, in forward return F.relu(input, inplace=self.inplace) File "D:\Software\Anaconda\envs\VRCNetPT\lib\site-packages\torch\nn\functional.py", line 1297, in relu result = torch.relu_(input)
时间: 2023-07-17 12:02:10 浏览: 154
根据报错信息,问题出现在 `vrcnet.py` 文件的第 461 行,具体是在 `forward` 方法中的 `o_x = self.posterior_infer2(self.posterior_infer1(feat_x))` 这一行。而 `self.posterior_infer2` 和 `self.posterior_infer1` 方法可能会返回多个视图,并且在这些视图上进行就地修改。
为了解决这个问题,你可以尝试使用非就地操作来替换就地修改操作。你可以使用类似 `torch.clone()` 或 `torch.tensor.clone()` 的方法创建一个新的张量,并对其进行修改。
例如,你可以修改代码如下:
```python
o_x = self.posterior_infer2(self.posterior_infer1(feat_x.clone()))
```
这样,就会创建一个 `feat_x` 的副本,并且在副本上进行操作,而不会修改原始视图。这样可以避免出现就地修改错误。
阅读全文