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
]]

用”{ }”来提取

results matching ""

    No results matching ""