本文概述
二维张量类似于二维度量。二维度量标准具有n行和n列。类似地, 二维张量也具有n行n列。
二维张量具有以下表示
灰度标量图像是像素的二维矩阵。每个像素的强度由介于0到255之间的数值表示, 因此强度值0表示没有强度的事物完全为黑色, 而255表示最大强度的事物为完全白色。我们可以存储此二维值网格。
创建二维张量
要创建二维张量, 首先必须使用割炬的ranging()方法创建一维张量。此方法包含两个整数类型的参数。此方法根据给定参数按张量排列元素。创建一维张量后, 下一步就是以二维形式更改其视图并将此视图存储为变量的二维类型。
让我们看一个创建二维张量的例子
import torch
x=torch.arange(0, 9)
x
y=x.view(3, 3)
y
输出
tensor([0, 1, 2, 3, 4, 5, 6, 7, 8])
tensor([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
注意:要检查张量的尺寸, 我们必须使用张量的dim()方法。
import torch
x=torch.arange(0, 9)
x
y=x.view(3, 3)
y
x.dim()
y.dim()
输出
tensor([0, 1, 2, 3, 4, 5, 6, 7, 8])
tensor([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
1
2
访问二维张量元素
让我们看一个二维张量的例子, 以了解如何使用索引从二维张量访问特定元素。
例子
import torch
x=torch.arange(0, 9)
x
y=x.view(3, 3)
y
y[0, 2]
输出
tensor([0, 1, 2, 3, 4, 5, 6, 7, 8])
tensor([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
tensor(2)
张量乘法
以与度量乘法相同的方式完成乘法。张量乘法是通过将相应的行与相应的列相乘来完成的。张量乘法在深度学习模型中起着至关重要的作用。张量可以是一维, 二维, 三维等。张量的乘法仅在兼容的大小下完成。
让我们看一个张量乘法的例子
import torch
mat_a=torch.tensor([1, 3, 5, 7, 9, 2, 4, 6, 8])
mat_a=mat_a.view(3, 3)
mat_b=torch.tensor([1, 3, 5, 7, 9, 2, 4, 6, 8])
mat_b=mat_b.view(3, 3)
mat_a
mat_b
torch.matmul(mat_a, mat_b)# We can also usemat_a @ mat_b
输出
tensor([[1, 3, 5], [7, 9, 2], [4, 6, 8]])
tensor([[1, 3, 5], [7, 9, 2], [4, 6, 8]])
tensor([[ 42, 60, 51], [ 78, 114, 69], [ 78, 114, 96]])
三维张量
三维张量是借助view()方法制成的。三维张量具有以下结构
从3D张量访问元素
从3D张量访问元素非常容易。这将使用索引来完成。
例子
import torch
x=torch.arange(18)
y=x.view(3, 2, 3)
y
y[1, 1, 1]
输出
tensor([[[ 0, 1, 2], [ 3, 4, 5]], [[ 6, 7, 8], [ 9, 10, 11]], [[12, 13, 14], [15, 16, 17]]])
tensor(10)
三维张量切片
段切片与我们将一维张量切片的方式非常相似。切片张量意味着将张量的元素切片为新的张量, 或者可以说切片是通过划分张量来创建新的张量的过程。
例子
让我们有一个三维张量, 其中包含从0到17的元素, 并且我们想将张量从6切成11。
import torch
x=torch.arange(18)
y=x.view(3, 2, 3)
y
y[1, 0:2, 0:3] # can also apply y[1, :, :]
输出
tensor([[[ 0, 1, 2], [ 3, 4, 5]], [[ 6, 7, 8], [ 9, 10, 11]], [[12, 13, 14], [15, 16, 17]]])
tensor([[ 6, 7, 8], [ 9, 10, 11]])
评论前必须登录!
注册