## 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}
- 1 Lua介紹及環境
- 2 基本語法
- 3 數據類型
- 4 Lua 變量
- 5 循環
- 6 流程控制
- 7 函數
- 8 運算符
- 9 字符串
- 10 數組
- 11 迭代器
- 12 table
- 13 Lua 模塊與包
- 14 Lua 元表(Metatable)
- 14.1 元表案例
- 15 Lua 協同程序(coroutine)
- 16 Lua 文件IO
- 17 Lua 面向對象
- 17.1 類
- 17.2 繼承
- 17.3 封裝
- 18 Lua 與 Mysql
- 19 Lua 與 redis
- 20 Lua 與 JSON
- 21 Lua 與 http
- 22 Lua 與 Nginx
- 22.1 Nginx_Lua的安裝及環境
- 22.2 ngx_lua API(全表)
- 22.3 常用命令介紹
- 22 Lua 人工智能
- (1) Torch的安裝
- (2)Tensor
- Lua與C混合編程