def forward(self, pointcloud: torch.cuda.FloatTensor): xyz, features = self._break_up_pc(pointcloud) l_xyz, l_features = [xyz], [features] for i in range(len(self.SA_modules)): li_xyz, li_features = self.SA_modules[i](l_xyz[i], l_features[i]) l_xyz.append(li_xyz) l_features.append(li_features)明明在使用SA_modules时只给了l_xyz和l_features两个参数,怎么会报错说 File "/root/autodl-tmp/project/tools/../lib/net/pointnet2_msg.py", line 154, in forward li_xyz, li_features = self.SA_modules[i](l_xyz[i], l_features[i]) File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 727, in _call_impl result = self.forward(*input, **kwargs) TypeError: forward() takes 2 positional arguments but 3 were given呢?
时间: 2023-07-15 08:13:47 浏览: 182
torch.cuda.is_available()返回False解决方案
5星 · 资源好评率100%
根据错误信息,可以看出是在调用 `self.SA_modules[i](l_xyz[i], l_features[i])` 时传入了三个参数,但是 `forward()` 方法只接受两个参数。这表明 `self.SA_modules` 中的某个模块在其 `forward()` 方法中接受了额外的参数。
建议检查 `SA_module` 中每个模块的 `forward()` 方法,看看是否有参数缺失或者多传。此外,也可以检查 `SA_module` 的初始化方法,看看是否有错误地设置了模块的输入参数。
阅读全文