pytorch当中,如果是两个维度不同的1维张量,没办法做广播运算。
a=torch.tensor([1,2,3])
b=torch.tensor([4,4])
但是如果把一维张量增加一个维度,变成二维张量,就可以做广播运算了。
a = a[None]
b=b[:, None]
print(a*b)
'''
输出
tensor([[ 4, 8, 12],
[ 4, 8, 12]])
'''
如何增加维度:
原先a是一维张量,长度为3;a[None]表示在0这个维度增加一个维度(行),那么长度为3的维度就放到了维度1(列),所以就变成了1行3列。
原先b是长度为2的一维张量;b[:, None]表示在1这个维度上增加一个维度(列),那么长度为2的维度依旧在维度0(行),所以变成2行1列的张量。