sy,sx = torch.meshgrid(sy, sx, indexing='ij') if TORCH_1_10 else torch.meshgrid(sy, sx)报错
时间: 2023-08-19 11:03:49 浏览: 335
这个报错可能是因为你正在使用的 PyTorch 版本不支持 `indexing` 参数。如果你使用的是 PyTorch 1.10 及以上版本,那么可以尝试删除 `indexing='ij'` 参数,因为在这些版本中,`meshgrid` 函数默认使用的是 `'ij'` 索引方式。
如果你使用的是 PyTorch 1.9 及以下版本,那么可以尝试将 `indexing='ij'` 参数替换为 `indexing='xy'` 参数。这是因为在这些版本中,`meshgrid` 函数默认使用的是 `'xy'` 索引方式。另外,你也可以升级 PyTorch 到最新版本以避免这个问题。
相关问题
File "E:\learning\NEW\code\yolov8\NWPU\yolov8-pytorch-master\utils\utils_bbox.py", line 25, in make_anchors sy,sx = torch.meshgrid(sy, sx, indexing='ij') if TORCH_1_10 else torch.meshgrid(sy, sx) File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch\functional.py", line 463, in meshgrid return _meshgrid(*tensors, indexing=indexing) File "D:\Anaconda3\envs\pytorch\lib\site-packages\torch\functional.py", line 478, in _meshgrid return _VF.meshgrid(tensors, **kwargs,indexing='ij') # type: ignore[attr-defined] TypeError: meshgrid() got multiple values for keyword argument 'indexing'
这个错误是因为`meshgrid`函数的`indexing`参数在PyTorch 1.10版本中被添加,而早期版本中没有该参数。你可以尝试以下两个解决方法中的任意一个:
1. 如果你使用的是PyTorch 1.10或更高版本,请删除`if TORCH_1_10 else`这一行代码,直接使用以下代码即可:
```
sy, sx = torch.meshgrid(sy, sx, indexing='ij')
```
2. 如果你使用的是早期版本的PyTorch,请将代码改为以下形式:
```
if TORCH_1_10:
sy, sx = torch.meshgrid(sy, sx, indexing='ij')
else:
sy, sx = torch.meshgrid(sy, sx)
```
torch.meshgrid(center_h, center_w, indexing='ij')
这是一个用于生成网格点坐标的PyTorch函数。其中center_h和center_w是两个一维张量,分别表示网格在垂直和水平方向上的中心坐标。indexing参数指定生成的网格点坐标的索引方式,'ij'表示使用Cartesian坐标系,'xy'表示使用矩阵坐标系。函数返回的是两个二维张量,表示生成的网格点坐标在垂直和水平方向上的坐标值。
阅读全文