Sun Quanzhi

Results 2 comments of Sun Quanzhi

> > 在用自己的数据集运行DG库中的MMD算法时,出现了矩阵形状不一样导致无法相加的问题。下图是github中MMD计算的代码: ![b71752db2290bfd5703138368d41c05](https://user-images.githubusercontent.com/130576127/254166352-224e1f3e-767e-4979-b26f-fd57d10d96fa.jpg) 我的数据,x1和x2的形状均为(32, 600, 64)。考虑到batch问题,我在计算时将`addmm`换为了`addbmm`,但是我发现,无论是用二维数据使用`addmm`还是三维数据使用`addbmm`,在计算时存在矩阵形状不一样导致无法相加的问题,各个张量的形状如下图所示: ![66e83a0c316846b11decc46f064f3c4](https://user-images.githubusercontent.com/130576127/254167741-c2ca2dea-fa65-42be-a7e4-d033fc545307.jpg) 可以看到,`x2_norm.transpose(-2, -1)`的形状与`matmul(x1, x2.transpose(-2, -1))`的形状不一致,二者是没办法做和相加的。麻烦大佬们看一下,是哪里有了问题?感谢 > > 建议的做法是将三维的转化成二维的进行MMD距离计算。如果用torch.addbmm,最好参考一下[https://pytorch.org/docs/1.10/generated/torch.addmm.html?highlight=addmm#torch.addmm,](https://pytorch.org/docs/1.10/generated/torch.addmm.html?highlight=addmm#torch.addmm%EF%BC%8C) 可以看出来维度是不一致的。 问题是,我用二维矩阵也试过,按照你们MMD的代码,还是存在形状不一致,addmm无法进行相加的问题的。你也可以推导一下。

如果`x2_norm.transpose(-2, -1)`的形状与`matmul(x1, x2.transpose(-2, -1))`的形状不一致,二者是没办法做和相加的,那么你们现在的MMD代码也就无法跑通呀。