如何在 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 张量的形式获取结果。张量的各种应用被用于物理学、工程学和计算机科学领域。
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP