如何在 Pytorch 中切片 3D 张量?
Python 中的 3D 张量以其矩阵数组而闻名,而 1D 和 2D 张量分别表示向量和矩阵。Pytorch 是基于 Python 编程语言的机器学习框架的开源模块,它提供了名为 torch 的模块。在 Python 中,我们有一些内置函数,如 randn()、rand() 和 split(),可用于表示 Pytorch 中 3D 张量的切片。
语法
以下语法在示例中使用:
import torch
这是一个 Python 模块,它保存所有神经网络的基类。它有助于构建和训练神经网络,例如输入、输出和隐藏层。
randn()
这是一个 NumPy 库内置函数,可用于从数组中设置标准正态分布的随机样本。
rand()
这是 Python 的一个内置函数,用于生成伪随机数。
split()
这是 Python 中的内置方法,用于将字符串转换为列表。
安装要求
pip install torch
此模块有助于基于 1D、2D 和 3D 张量运行程序。
示例 1
在以下示例中,我们将通过导入 torch 模块来启动程序。然后使用名为 **randn()** 的内置方法,该方法遵循 **torch** 模块,接受一些整数作为参数以列表的形式分配数组的平均标准,并将其存储在变量 **a** 中。然后连续初始化三个变量 - b、c 和 d,它们将通过保留其元素来切片维度。接下来,使用 print 函数依次设置所有变量并获取结果。
import torch a = torch.randn(1,2,3) # Slicing of the first dimension by keeping the first element b = x[0:1,:,:] # Slicing of the second dimension by keeping the second element c = x[:,0:2,:] # Slicing of the third dimension by keeping the third element d = x[:,:,-2:] print(a) print(b) print(c) print(d)
输出
tensor([[[ 0.1352, -0.8739, -1.5743], [-0.4853, 0.7519, 0.9749]]]) tensor([[[-0.7441, 0.3385, -1.0671, 1.0431], [ 0.2104, -0.3083, 1.1756, 0.3387], [ 0.8722, 0.4534, 0.5528, -0.3567]]]) tensor([[[-0.7441, 0.3385, -1.0671, 1.0431], [ 0.2104, -0.3083, 1.1756, 0.3387]], [[ 0.6623, 1.3858, -1.0033, -0.5977], [ 1.1141, -0.8058, 1.5914, 0.6476]]]) tensor([[[-1.0671, 1.0431], [ 1.1756, 0.3387], [ 0.5528, -0.3567]], [[-1.0033, -0.5977], [ 1.5914, 0.6476], [ 1.6480, -0.9212]]])
示例 2
在以下示例中,通过导入 torch 模块来开始程序。然后将三个数组列表的总和存储在变量 tensor_3d 中。接下来,将列表的第 0 个索引存储在变量 tensor 中。同样,将 list1 和 list2 分别存储在变量 tensor1 和 tensor2 中。然后在所有张量变量的帮助下打印结果。
import torch tensor_3d = ([[[10, 20, 30, 40],[50, 60, 70, 80],[1, 2, 3, 4]], [[13, 14, 15, 16],[21, 22, 23, 24], [3, 4, 5, 6]], [[61, 62, 63, 64],[71, 72, 73, 74],[7, 8, 9, 10]]]) tensor = tensor_3d[0] tensor1 = tensor_3d[1] tensor2 = tensor_3d[2] print("The first dimension:",tensor) print("The second dimension:",tensor1) print("The third dimension:",tensor2)
输出
The first dimension: [[10, 20, 30, 40], [50, 60, 70, 80], [1, 2, 3, 4]] The second dimension: [[13, 14, 15, 16], [21, 22, 23, 24], [3, 4, 5, 6]] The third dimension: [[61, 62, 63, 64], [71, 72, 73, 74], [7, 8, 9, 10]]
示例 3
在以下示例中,通过导入必要的名为 torch 和 random 的模块来开始程序,该模块将生成具有随机值的矩阵数组。然后 torch.rand((3, 4, 8)) 创建 0 到 1 之间的随机值并将其存储在变量 x 中。接下来,torch.split() 接受三个参数 - x、3 和 2,它们将张量 x 沿第三维度 (2) 分成块,每个块的大小为 3,并将其存储在变量 slices 中。最后,我们使用变量 **slices** 打印结果。
请注意,块是指通过沿特定维度划分原始张量而创建的较小张量。
import torch import random # generate the random values between 0 and 1 x = torch.rand((3,4,8)) slices = torch.split(x, 3, 2) print(slices)
输出
(tensor([[[0.3747, 0.4710, 0.4233, 0.2445], [0.9414, 0.6634, 0.6091, 0.8761], [0.7911, 0.8687, 0.8468, 0.8766], [0.8192, 0.1498, 0.7685, 0.4718]], [[0.4160, 0.7172, 0.4647, 0.4860], [0.7074, 0.9610, 0.4967, 0.7411], [0.2269, 0.8565, 0.8671, 0.3461], [0.0397, 0.0809, 0.2017, 0.1106]], [[0.6528, 0.7044, 0.7829, 0.1844], [0.4297, 0.2802, 0.4159, 0.4485], [0.5843, 0.6958, 0.8991, 0.3918], [0.2549, 0.9363, 0.3098, 0.7053]]]), tensor([[[0.0095, 0.4314, 0.6110, 0.4594], [0.8541, 0.7622, 0.3550, 0.7715], [0.5951, 0.9786, 0.3598, 0.2587], [0.5516, 0.6523, 0.5176, 0.1267]], [[0.8616, 0.3667, 0.0145, 0.9252], [0.5995, 0.3094, 0.0483, 0.1996], [0.1004, 0.1373, 0.3303, 0.0982], [0.2414, 0.7782, 0.8850, 0.1027]], [[0.0559, 0.8675, 0.7974, 0.6309], [0.3900, 0.4914, 0.4957, 0.5973], [0.6249, 0.8075, 0.6700, 0.7789], [0.6211, 0.9158, 0.6633, 0.2306]]]))
结论
我们讨论了 Pytorch 中所有类型的张量。Pytorch 简称为 N 维或高维张量。以上输出使用了各种内置函数,如 split()、randn() 和 rand(),这些函数有助于以 3D 张量的形式获取结果。张量的各种应用被用于物理学、工程学和计算机科学领域。