HAN&DAI

  • 首页
  • 遥感应用
  • GIS应用
  • 机器学习
  • 实用工具
  • 文章链接
  • 遥感数据集
HAN&DAI
遥感与地理信息技术交流社区
  1. 首页
  2. BUG修改
  3. 正文

BUG: torch.pairwise_distance()计算欧式距离报错,出现size不匹配的情况

2023年3月31日 514点热度 1人点赞 0条评论

由于网络中用到了torch.pairwise_distance(),发现在不同版本的pytorch下,计算结果不一致的情况。下面就来解决这个问题。

一、torch.nn. PairwiseDistance ( p = 2.0 , eps = 1e-06 , keepdim = False )用法

首先,了解一下pytorch里 torch.pairwise_distance()的用法。

其中,各项参数如下:
p ( real , optional ) – 范数度。可以为负。默认值:2

eps ( float , optional ) – 小值以避免被零除。默认值:1e-6

keepdim ( bool , optional ) – 确定是否保持向量维度。默认值:False

按照其上意思,对于x1(B,C,H,W)和x2(B,C,H,W)进行欧式距离计算,如下:
import torch.nn.functional as F
dist = F.pairwise_distance(x1, x2, keepdim=True)
则可获得dist(B,1,H,W)。
在pytorch1.8.0中进行如上计算,结果完全正确。
然而,在pytorch1.13.0中进行如上计算,则发现结果的size乱码了,得到dist(B,C,H,1)。蜜汁困惑啊!!!

后来,在这篇blog里发现,因为torch.pairwise_distance函数,会对最后一维进行展开,所以应该先把张量维度重构为(Batch,sizeA(B),sizeB(A),Channel),再进行计算即可。

因此,解决办法是,先将x1和x2进行维度变换,转换成(B,H,W,C)再进行欧式距离计算,即可。
x1=x1.contiguous().permute(0,2,3,1)
x2=x2.contiguous().permute(0,2,3,1)

Post Views: 519

相关文章:

  1. BUG:ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found
  2. 利用arcgis制作深度学习标签数据(以二分类为例)
  3. BUG:ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found
  4. 两台Ubuntu服务器系统实现文件夹共享
本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: BUG pytorch 实用技巧
最后更新:2023年4月2日

daidai

一个热爱RS和GIS技术的小姐姐!

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

文章目录
  • 一、torch.nn. PairwiseDistance ( p = 2.0 , eps = 1e-06 , keepdim = False )用法
浏览最多的文章
  • BUG:ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (1,448)
  • BUG:“ModuleNotFoundError: No module named '_ext'”的解决方案 (1,213)
  • 利用GEE下载指定区域Landsat8影像 (1,166)
  • 利用arcgis制作深度学习标签数据(以二分类为例) (892)
  • 利用传统机器学习方法进行遥感影像分类-以随机森林(RF)为例 (798)

COPYRIGHT © 2025 HAN&DAI. ALL RIGHTS RESERVED. QQ交流群:821388027

Theme Kratos Made By Seaton Jiang