🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## Tensor ### > 必备知识:矩阵的算法。 Tensor是Torch提供的一套矩阵的算法封装,我们可以用tensor来任意创建多维矩阵并且进行相关的计算\(相加,相乘,选取,裁剪等\)操作. #### I.初始化数组 ```lua 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.访问数组属性 ```lua z = torch.Tensor(3,4) --创建二维数组(3行4列) x = z:nDimension() -- 显示当前数组的维度,2 y = z:size() -- y的值为size2的一维数组。3和4 t = z:nElement() -- 元素个数 12 ``` #### III.复制 ```lua x = torch.Tensor(4):fill(1) y = torch.Tensor(2,2):copy(x) --也可以实现不同Tensor的复制。 ``` #### IV.Tensor的提取 > ## 用函数提取 select/narrow/sub {#selectnarrowsub} select是直接提取某一维; narrow是取出某一维并进行裁剪; sub就是取出一块,是对取出的所有维进行裁剪。 **语法:** select\(维度, index\); narrow\(维度, 起始下标, 终止下标\); sub\(1维的开始下标, 1维的结束下标, 2维的开始下标, 2维的结束下标, …\) ```lua 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 ]] ``` > ## 用”{ }”来提取 {#selectnarrowsub}