<reponame>zhangbo2008/swin_transformer_newlly
import torch
indices=torch.tensor([[1,2],[3,4]])
indices2=torch.tensor([[0,1],[0,2]])
b=indices[None, :, :] - indices2[:, None, :] # 这种计算先看shape都补成一样先, 先都补成2,2,2         看第一个, 就是12,34 的矩阵.然后补第一个维度我们就把他补成2个矩阵, 每一个都是1,2 3,4就行. 向前拓展维度就这么简单.       第二个拓展就需要看临近的了,  01 02 矩阵,里面补维度要先看前面, 也就是indices2里面第一个维度也就是 01, 对他进行拓展也就是进行复制. 也就是 变成01 01 的矩阵 , 和一个02 02的矩阵再减法即可.


b=indices[None, :, :] - indices2[:, :, None]  # 看后面这个矩阵. 需要把前面的数据 01 02 进行拓展, 拓展方法是 找临近的一个维度. 也就是 0,1   把他拓展为一个矩阵.并且让里面数据当成行.所以拓展玩就是 0 0 11   , 然后类似 0,2 拓展为一个矩阵, 就是 0 0 , 22  就是里面每一个数据进行copy成一个矩阵. 每一个数据, 比如0 要称为一个行.
# 下面我们再看向



indices=torch.tensor([1,2])
a=indices[None,:]-torch.tensor([[0,1],[0,2]])
print(a)  #  1,2 进行拓展, 因为是向前, 所以1,2 每一个元素都拓展出一个列.





indices=torch.tensor([1,2])
a=indices[:,None]-torch.tensor([[0,1],[0,2]])
print(a)  #  1,2 每一个元素都拓展为一行. 所以结果是 1,1    2,2
print(b)
import torch
indices=torch.tensor([[1,2],[3,4]])
indices2=torch.tensor([[0,1],[0,2]])
b=indices[None, :, :] - indices2[:, None, :] # 这种计算先看shape都补成一样先, 先都补成2,2,2         看第一个, 就是12,34 的矩阵.然后补第一个维度我们就把他补成2个矩阵, 每一个都是1,2 3,4就行. 向前拓展维度就这么简单.       第二个拓展就需要看临近的了,  01 02 矩阵,里面补维度要先看前面, 也就是indices2里面第一个维度也就是 01, 对他进行拓展也就是进行复制. 也就是 变成01 01 的矩阵 , 和一个02 02的矩阵再减法即可.


b=indices[None, :, :] - indices2[:, :, None]  # 看后面这个矩阵. 需要把前面的数据 01 02 进行拓展, 拓展方法是 找临近的一个维度. 也就是 0,1   把他拓展为一个矩阵.并且让里面数据当成行.所以拓展玩就是 0 0 11   , 然后类似 0,2 拓展为一个矩阵, 就是 0 0 , 22  就是里面每一个数据进行copy成一个矩阵. 每一个数据, 比如0 要称为一个行.
# 下面我们再看向



indices=torch.tensor([1,2])
a=indices[None,:]-torch.tensor([[0,1],[0,2]])
print(a)  #  1,2 进行拓展, 因为是向前, 所以1,2 每一个元素都拓展出一个列.





indices=torch.tensor([1,2])
a=indices[:,None]-torch.tensor([[0,1],[0,2]])
print(a)  #  1,2 每一个元素都拓展为一行. 所以结果是 1,1    2,2
print(b)
# 这种计算先看shape都补成一样先, 先都补成2,2,2         看第一个, 就是12,34 的矩阵.然后补第一个维度我们就把他补成2个矩阵, 每一个都是1,2 3,4就行. 向前拓展维度就这么简单.       第二个拓展就需要看临近的了,  01 02 矩阵,里面补维度要先看前面, 也就是indices2里面第一个维度也就是 01, 对他进行拓展也就是进行复制. 也就是 变成01 01 的矩阵 , 和一个02 02的矩阵再减法即可. # 看后面这个矩阵. 需要把前面的数据 01 02 进行拓展, 拓展方法是 找临近的一个维度. 也就是 0,1   把他拓展为一个矩阵.并且让里面数据当成行.所以拓展玩就是 0 0 11   , 然后类似 0,2 拓展为一个矩阵, 就是 0 0 , 22  就是里面每一个数据进行copy成一个矩阵. 每一个数据, 比如0 要称为一个行. # 下面我们再看向 #  1,2 进行拓展, 因为是向前, 所以1,2 每一个元素都拓展出一个列. #  1,2 每一个元素都拓展为一行. 所以结果是 1,1    2,2