Pytorch 如何切割3D张量

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 Tensor的程序。

示例1

在下面的示例中,我们将通过导入torch模块来开始程序。然后使用名为 randn() 的内置方法,该方法遵循模块 torch ,接受一个整数作为参数,将数组的平均标准分布在一个列表中,并将其存储在变量 a 中。然后连续初始化三个变量b、c和d,它们将通过保持其元素来切片维度。接下来,使用打印函数依次设置所有变量并得到结果。

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模块开始程序。然后将三个array列表的总和存储在变量tensor_3d中。接下来,将列表的第0个索引存储在变量tensor中。以同样的方式,将list1和list2分别存储在变量tensor1和tensor2中。然后通过所有tensor变量的帮助打印结果。

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,它们在第三维度(2)上将张量x划分成大小为3的块,并将其存储在变量slices中。最后,我们借助变量 slices 打印结果。

注意,chunk指的是沿特定维度划分原始张量所创建的较小张量。

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张量的形式获得结果。张量的各种应用在物理学、工程学和计算机科学领域得到了应用。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程