tensor

时间:2021-11-13 03:16:48

初始化

z = torch.Tensor(,,,,)  --可以创建多维数组。里面是随机的数。
s = torch.Tensor(,):fill() --用1填充
t = torch.rand(,)
m = torch.zeros(,)或者 m = torch.Tensor(3,3):zero() --第一个zero后面有s,第二个没有
th> a=torch.Tensor()
[.0001s]
th> a
7.0944e-317
6.9495e-310
1.5085e+132
[torch.DoubleTensor of size ] [.0061s]
th> b=torch.Tensor(,)
[.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(,)
x = z:nDimension() -- 2,tensor多少维
y = z:size() -- 3和4
t = z:nElement() --

改变tensor里的元素

x = torch.Tensor(,):zero()
x[{,}] = --第一行第三个元素转换成1
x[ {, {,}} ] = --第二行第二个到第四个元素都转换成1
x[ { {}, }] = - --从第一行到最后一行,每行的第四个元素都转换成-1

tensor的提取

总说:select是直接提取某一维;narrow是取出某一维并进行裁剪; sub就是取出一块,是对取出的所有维进行裁剪。 
语法 select(dim, index); narrow(dim, index, num); sub(dim1s, dim1e, dim2s, dim2e,…)

x = torch.Tensor(,)
i =
x:apply(function()i = i+ return i end)
--[[
x 为
1 2 3 4
5 6 7 8
9 10 11 12
]]
selected = x:select(,) --第一维的第二个,就是第二行。第一个参数是选择哪一维,第二个参数是选择这一维的哪一个。
narrowed = x:narrow(,,)
--[[ 第二维的第一个到第二个
th> narrowed
1 2
5 6
9 10
]]
subbed = x:sub(,,,)
--[[ 一维到3为止,二维也到3为止。
th> subbed
2 3
6 7
10 11
]]