tensor
初始化
z = torch.Tensor(3,4,2,3,5) --可以创建多维数组。里面是随机的数。
s = torch.Tensor(2,3):fill(1) --用1填充
t = torch.rand(3,3)
m = torch.zeros(3,3)或者 m = torch.Tensor(3,3):zero() --第一个zero后面有s,第二个没有
th> a=torch.Tensor(3) [0.0001s] th> a 7.0944e-317 6.9495e-310 1.5085e+132 [torch.DoubleTensor of size 3] [0.0061s] th> b=torch.Tensor(2,3) [0.0001s] th> b 9.4690e+250 5.2287e-67 8.1738e+247 7.7683e-72 8.1738e+247 1.9119e+214 [torch.DoubleTensor of size 2x3] 只有一个参数时,是行参数
tensor相关信息
z = torch.Tensor(3,4) x = z:nDimension() -- 2,tensor多少维 y = z:size() -- 3和4 t = z:nElement() -- 12
改变tensor里的元素
x = torch.Tensor(5,6):zero() x[{1,3}] = 1 --第一行第三个元素转换成1 x[ {2, {2,4}} ] = 2 --第二行第二个到第四个元素都转换成1 x[ { {}, 4}] = -1 --从第一行到最后一行,每行的第四个元素都转换成-1
tensor的提取
总说:select是直接提取某一维;narrow是取出某一维并进行裁剪; sub就是取出一块,是对取出的所有维进行裁剪。
语法: select(dim, index); narrow(dim, index, num); sub(dim1s, dim1e, dim2s, dim2e,…)
x = torch.Tensor(3,4) i = 0 x:apply(function()i = i+1 return i end) --[[ x 为 1 2 3 4 5 6 7 8 9 10 11 12 ]] selected = x:select(1,2) --第一维的第二个,就是第二行。第一个参数是选择哪一维,第二个参数是选择这一维的哪一个。 narrowed = x:narrow(2,1,2) --[[ 第二维的第一个到第二个 th> narrowed 1 2 5 6 9 10 ]] subbed = x:sub(1,3,2,3) --[[ 一维到3为止,二维也到3为止。 th> subbed 2 3 6 7 10 11 ]]