定义:

在PyTorch中,张量(tensor)是一种类似于多维数组的数据结构,它是PyTorch的核心数据类型。和numpy的计算方式不同。

张量可以具有不同的维度,例如标量(0维张量,类似于一个数字)、向量(1维张量,类似于一维数组)、矩阵(2维张量,类似于二维数组)以及更高维度的数组。

张量的维度,矩阵的维度主要看第一个数,也就是看行,几行代表几维

tensor([[[ 0.3159,  0.5916, -0.1877,  ..., -0.1326,  0.7385, -0.2968],
         [-0.0795,  0.2788, -0.2303,  ...,  0.0711,  1.0474, -0.0848],
         [ 0.1396,  0.7664,  0.2179,  ...,  0.2025, -0.1237, -0.6554],
         ...,
         [-0.0077,  0.3957, -0.1279,  ...,  0.0642,  0.3796,  0.0124],
         [-0.0241,  0.0807, -0.0496,  ..., -0.2232,  0.7174, -0.1816],
         [ 0.0248,  0.4351, -0.9713,  ..., -0.0470,  1.4571, -1.3380]]],
       grad_fn=<NativeLayerNormBackward0>)

torch.Size([1, 8, 768])

  

二维

import torch

# 定义二维张量的维度
rows = 4
columns = 5
# 创建一个具有随机值的二维张量
tensor_2d = torch.rand(rows, columns)

# 打印张量
print(tensor_2d)

  

三维

batch_size:张量中包含的独立数据样本的数量

sequence_length:行

feature_size:列

import torch

# 创建一个随机的三维张量 [batch_size, sequence_length, feature_size]
batch_size = 2
sequence_length = 3
feature_size = 4
tensor_3d = torch.rand(batch_size, sequence_length, feature_size)
print(tensor_3d)
# 结果
tensor([[[0.7250, 0.3018, 0.5198, 0.8118],
[0.1717, 0.9978, 0.6322, 0.4474],
[0.3699, 0.4043, 0.0564, 0.1576]],

[[0.0479, 0.0701, 0.6801, 0.6542],
[0.1884, 0.3435, 0.2742, 0.0225],
[0.3364, 0.5487, 0.3518, 0.8888]]])

  

import torch

# 创建一个随机的三维张量 [batch_size, sequence_length, feature_size]
batch_size = 1
sequence_length = 3
feature_size = 4
tensor_3d = torch.rand(batch_size, sequence_length, feature_size)
print(tensor_3d)
# 结果
tensor([[[0.2796, 0.3359, 0.0360, 0.1286],
[0.3787, 0.2236, 0.1142, 0.0386],
[0.2392, 0.2876, 0.2323, 0.2826]]])

 

降维

# 从三维降至二维 [batch_size, feature_size],这里我们沿着 sequence_length 维度取最大值
tensor_2d, _ = torch.max(tensor_3d, dim=1)
print(tensor_2d)
# 结果
tensor([[0.3787, 0.3359, 0.2323, 0.2826]])

  

# 从二维降至一维
# 这里我们通过 .squeeze() 方法降维,但只适用于 batch_size 为 1 的情况
tensor_1d = tensor_2d.squeeze()

print(tensor_1d)
# 结果
tensor([0.3787, 0.3359, 0.2323, 0.2826])

  

张量和矩阵的区别

计算方式不同

 

posted on 2023-11-23 20:55  黑逍逍  阅读(78)  评论(0编辑  收藏  举报