美文网首页
关于UserWarning: torch.meshgrid: i

关于UserWarning: torch.meshgrid: i

作者: 孤独面壁者 | 来源:发表于2023-10-19 09:01 被阅读0次

    有时候在跑代码是会出现下面这个错误
    /root/miniconda3/lib/python3.8/site-packages/torch/functional.py:568: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at ../aten/src/ATen/native/TensorShape.cpp:2228.)

    这个UserWarning警告是关于torch.meshgrid函数的改动提示。
    在PyTorch的新版本中,torch.meshgrid函数需要增加一个indexing参数来指定索引模式。
    目前torch.meshgrid默认的索引模式是'ij',新版本中需要显式指定:

    根据报错的提示点击上述报错提示内容,然后跳转到相应的functional[.py文件]

        kwargs = {} if indexing is None else {'indexing': indexing}
        return _VF.meshgrid(tensors, **kwargs)  # type: ignore[attr-defined]
    

    改为

        # 新版本中需要指定indexing模式
        kwargs = {} if indexing is None else {'indexing': indexing}
        return _VF.meshgrid(tensors, **kwargs,  indexing='ij')  # type: ignore[attr-defined]
    
    x = torch.arange(4)
    y = torch.arange(3) 
    
    xx, yy = torch.meshgrid(x, y) # 默认'ij'模式
    
    # 新版本中需要指定indexing模式
    xx, yy = torch.meshgrid(x, y, indexing='ij')
    

    这个indexing参数有两种模式:

    'ij'模式: 返回的第一个矩阵索引是i,第二个矩阵索引是j,这是默认的传统矩阵索引法则。
    'xy'模式: 返回的第一个矩阵索引是x,第二个矩阵索引是y。
    所以为了兼容新版本PyTorch,使用torch.meshgrid时需要显式添加indexing='ij'参数。

    这个UserWarning提醒我们新版本的改动,需要注意传入索引模式,以避免默认模式改变后代码出错。

    相关文章

      网友评论

          本文标题:关于UserWarning: torch.meshgrid: i

          本文链接:https://www.haomeiwen.com/subject/huchidtx.html