再维度上进行扩展
下面展示两种用法:
1、扩展出新的一维,仅限于1维变2维
输入:
import torch
seqlen=5
x1 = torch.arange(seqlen).expand(4,5)
x2=torch.arange(seqlen).expand(4,-1)
print(x1)
print(x2)
输出:
tensor([[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4]])
tensor([[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4]])
从上面可以看出来,-1为数据本身的维度,是可以互相取代的
2、将维数为1的进行扩展
import torch
import numpy as np
x=torch.tensor(np.random.randint(10,size=(3,1,5)))
print(x)
y=x.expand(3,3,5)
print(y)
如上(3,1,5),将第二维进行扩展从1变成3
那么如果对维数不是1的进行扩展可以吗?
不可以
第一种情况其实是第二种情况的特殊版
[1,2,3,4,5],虽然是一维,但是相当于1*5,知识把前面的1省掉了