pytorch 记录


注意到(1,2,3)这样一个三维的索引,1是高,2是行,3是列

torch.arange(1,10,2) : 从1到9(可见是左闭右开),步长为2的一个一维tensor

ta.repeat(2,3,4) : 把ta这个张量作为子块形成一个234的张量

pytorch中有stride(步长)属性,比如对于一个矩阵,可以看到3x3的矩阵里,

stride = (3,1)中:1是同一行相邻元素在内存中的距离,3是同一列中相邻元素在内存中的距离

当不满足连续条件时,得先用contiguous()变成连续的再用view(),或者直接用reshape(),注意用reshape和contiguous的话会开辟新的内存空间。
所谓连续性条件就是

我们将矩阵转置之后发现步长发生了变化,总结规律可以认为
原矩阵步长可解释为(到下一行的步长在内存中为3,到下一列的步长在内存中为1)
而由于转置是一种视图操作,矩阵的数据在内存中的排列顺序并未发生改变
转置矩阵步长可解释为(到下一行的步长在内存中为1,到下一列的步长在内存中为3)

而由于到下一列的步长不为1了,所以我们说连续性的形式被破坏了。这个时候就不能直接用view了!