Tensor
必备知识:矩阵的算法。
Tensor是Torch提供的一套矩阵的算法封装,我们可以用tensor来任意创建多维矩阵并且进行相关的计算(相加,相乘,选取,裁剪等)操作.
I.初始化数组
z = torch.Tensor(3,4,2,3,5) --可以创建多维(这里是5维)数组。里面是随机的数。
s = torch.Tensor(2,3):fill(1) --创建二维数组(2行3列),用1填充
t = torch.rand(3,3) --创建二维数组(2行2列),用随机小数填充
m = torch.zeros(3,3) --创建二维数组(3行3列),用0填充
II.访问数组属性
z = torch.Tensor(3,4) --创建二维数组(3行4列)
x = z:nDimension() -- 显示当前数组的维度,2
y = z:size() -- y的值为size2的一维数组。3和4
t = z:nElement() -- 元素个数 12
III.复制
x = torch.Tensor(4):fill(1)
y = torch.Tensor(2,2):copy(x) --也可以实现不同Tensor的复制。
IV.Tensor的提取
用函数提取 select/narrow/sub
select是直接提取某一维;
narrow是取出某一维并进行裁剪;
sub就是取出一块,是对取出的所有维进行裁剪。
语法:
select(维度, index);
narrow(维度, 起始下标, 终止下标);
sub(1维的开始下标, 1维的结束下标, 2维的开始下标, 2维的结束下标, …)
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) --第一维的第二个。就是第二行。相当于x[2]
narrowed = x:narrow(2,1,2) --截取x矩阵的第二维度中的从1到2元素,这里的第二维度是列,即,取第二列和第三列
--[[
th> narrowed
1 2
5 6
9 10
]]
subbed = x:sub(1,3,2,3) --第一维度 取1-3(第一行到第三行), 第二维度 取2-3(第二列到第三列)
--[[
2 3
6 7
10 11
]]
用”{ }”来提取