(1)torch.as_strided函数:从原张量中抽取数据
x=torch.tensor([[ 1.0560, -0.7634, 1.0131],
[ 1.2284, 1.2512, -0.5880],
[-0.9125, 1.3445, 0.8478]])
t=torch.as_strided(x, (3,3), (1, 2))
torch.as_strided(x, (3,3), (1, 2))中:
(3,3)指 t 的size;
1指t的每一列为上一列的索引加1,如t的第一列第一行为 1.0560,那么下一列为 -0.7634;
2指t的每一行的除第一个 元素外与每一行的第一个元素索引差2,如如t第一行的第一个元素为 1.0560,那么下一个为x中的第三个元素1.0131;
所以t=tensor([[ 1.0560, 1.0131, 1.2512],
[-0.7634, 1.2284, -0.5880],
[ 1.0131, 1.2512, -0.9125]])
(2)arrange:生成一个序列
torch.arange(1, 4) 》tensor([ 1, 2, 3])
torch.range包括尾部的4 torch.linspace(3, 10, steps=5) tensor([ 3.0000, 4.7500, 6.5000, 8.2500, 10.0000])
(3)按行或列提取元素
t = torch.tensor([[1, 2], [3, 4]])
torch.gather(t, 1, torch.tensor([[0, 0], [1, 0]]))
(4)交换tensor的次序
t = torch.randn(3,2,1) torch.movedim(t, (1, 0), (0, 1)).shape 输出为231,上面的代码应该为执行第一个位置与第二个位置的变换、第二个位置与第一个位置的变换,但是源代码可能对重复变换给删除了只留一个:将第二个位置与第一个位置的变换在源代码中变为了第一个位置与第二个位置的变换。所以只执行一次
(5) torch.scatter
(6)torch.manual_seed(1)设置随机种子,使所有程序生成的随机数相同,保证了实验的可复现性