当前位置: 代码迷 >> 综合 >> pytorch框架语法学习(1)——多维矩阵(tensor)
  详细解决方案

pytorch框架语法学习(1)——多维矩阵(tensor)

热度:62   发布时间:2023-12-03 01:06:29.0

pytorch框架语法学习(1)——多维矩阵(tensor)
在运用python编程时,总会遇到tensor张量,例如reshape(2,3,4,4)等多维矩阵。下面进行详细讲解。
下面展示一些 内联代码片

// 生成一个(2,3,4,4)
import torch
mask=torch.arange(96)
mask = mask.reshape(2,3,4,4)
print(mask)

结果如下:
tensor([[[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]],

     [[16, 17, 18, 19],[20, 21, 22, 23],[24, 25, 26, 27],[28, 29, 30, 31]],[[32, 33, 34, 35],[36, 37, 38, 39],[40, 41, 42, 43],[44, 45, 46, 47]]],[[[48, 49, 50, 51],[52, 53, 54, 55],[56, 57, 58, 59],[60, 61, 62, 63]],[[64, 65, 66, 67],[68, 69, 70, 71],[72, 73, 74, 75],[76, 77, 78, 79]],[[80, 81, 82, 83],[84, 85, 86, 87],[88, 89, 90, 91],[92, 93, 94, 95]]]])

从结果可以看出,(2,3,4,4)tensor可以理解为矩阵的嵌套,最基本的形状为4x4的矩阵,3个4x4的矩阵构成一级嵌套矩阵,2个一级嵌套矩阵构成一个二级嵌套矩阵。如果这里有更多的维度,假若为(5,2,3,4,4),则这里表示的是5个二级嵌套矩阵组成的三级矩阵。这个三级矩阵有5行3列组成,其中每个元素为(3,4,4)的矩阵。(3,4,4)是由3个(4,4)的矩阵组成的矩阵。具体参见以下程序:

// An highlighted block
mask=torch.arange(48)
mask = mask.reshape(3,4,4)
print(mask)

结果如下:
tensor([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]],

    [[16, 17, 18, 19],[20, 21, 22, 23],[24, 25, 26, 27],[28, 29, 30, 31]],[[32, 33, 34, 35],[36, 37, 38, 39],[40, 41, 42, 43],[44, 45, 46, 47]]])

怎么取用其中的元素呢?
这里还以(2,3,4,4)矩阵为例进行说明:
下面展示一些 内联代码片

// An highlighted block
#选取(23,4,4)矩阵的第0行,即以4x4矩阵作为元素构成的23列矩阵中的第0行。
mask[0]
print(mask[0])
#结果如下所示
#选取(23,4,4)矩阵的第0行的第1个元素(这里的元素代表4x4的矩阵)
mask[0][1]
print(mask[0][1]#选取(23,4,4)矩阵的第0行的第1个元素(这里的元素代表4x4的矩阵)矩阵的第2行。
mask[0][1][2]
print(mask[0][1][2]#选取(23,4,4)矩阵的第0行的第1个元素(这里的元素代表4x4的矩阵)矩阵的第2行中的第3个元素。

结果如下:
在这里插入图片描述在这里插入图片描述