Метод stack() PyTorch используется для объединения серии тензоров вместе с новым измерением. Эта функция используется для объединения тензоров того же размера и формы.

Синтаксис:

torch.stack(tensors, dim=0, out=None)

Параметры:

  • tensors: Тензор определяется как серия тензоров с новыми измерениями.
  • dim: dim — это вставляемое измерение, а его целое число находится в диапазоне от 0 до количества измерений входных тензоров.
  • out: Out — это параметр, который описывает выходной тензор.
Содержание

Пример

Метод torch.stack(), в котором все тензоры должны быть одинакового размера и использоваться для объединения или конкатенации серии тензоров вместе с новым измерением.

В следующем коде мы импортируем модуль факела, например import torch.

  • stackt1 = torch.tensor([1.,3.,6.,10.]): здесь мы создаем тензор с помощью функции torch.tensor().
  • print(«Tensor stackt1:», stackt1) используется для печати созданного тензора с помощью функции print().
  • s = torch.stack((stackt1,stackt2)): здесь мы вызываем функцию stack().
  • print(s): Здесь мы печатаем окончательный тензор после соединения с помощью функции print().
# importing torch
import torch
  
# Creating a tensors
stackt1 = torch.tensor([1.,3.,6.,10.])
stackt2 = torch.tensor([2.,7.,9.,13.])
  
# printing above created tensors
print("Tensor stackt1:", stackt1)
print("Tensor ystackt2:", stackt2)
  
# join above tensor using "torch.stack()"
print("Join the tensors:")
s = torch.stack((stackt1,stackt2))
  
# print final tensor after join
print(s)
  
print("Join the tensors dimension 0:")
s = torch.stack((stackt1,stackt2), dim = 0)
print(s)
  
print("join tensors dimension 1:")
s = torch.stack((stackt1,stackt2), dim = 1)
print(s)

После запуска приведенного выше кода мы получаем следующий вывод, в котором видим, что значения стека PyTorch печатаются на экране.

Пример стека PyTorch

Как использовать тензоры

Тензор стека PyTorch определяется как метод, который объединяет последовательность двух или более тензоров по новому измерению.

В следующем коде мы импортируем библиотеку факела как импорт факела.

  • stacktensor_1 = torch.Tensor([[20,30,40],[50,60,70]]): Здесь мы описываем переменную с помощью функции torch.tensor().
  • print(«stacktensor_1 \n», stacktensor_1) используется для печати первого тензора с помощью функции print().
  • stacktensor = torch.stack((stacktensor_1, stacktensor_2), -1): здесь мы вызываем функцию torch.stack().
  • print(«Объединить тензоры в измерении -1 \n», stacktensor) используется для печати значения тензора стека с помощью функции print().
# import torch library
import torch
  
# define tensors
stacktensor_1 = torch.Tensor([[20,30,40],[50,60,70]])
stacktensor_2 = torch.Tensor([[40,50,60],[70,80,90]])
  
# print first tensors
print("stacktensor_1 \n", stacktensor_1)
  
# print second tensor
print("stacktensor_2 \n", stacktensor_2)
  
# Calling the torch.stack() function join tensor in -1 dimension
stacktensor = torch.stack((stacktensor_1, stacktensor_2), -1)
print("Join the tensors in the -1 dimension \n", stacktensor)
  
# Join the tensor in 0 dimension
stacktensor = torch.stack((stacktensor_1, stacktensor_2), 0)
print("Join the tensors in the 0 dimension \n", stacktensor)

Выход:

После запуска приведенного выше кода мы получаем следующий вывод, в котором видим, что значения тензора стека PyTorch печатаются на экране.

Тензор стека PyTorch

2D-тензор для создания стека для создания 3D-тензора

В этом разделе мы узнаем о 2D-тензоре PyTorch, который нужно объединить в стек для создания 3D-тензора в Python.

Здесь мы используем двумерный тензор, объединили все тензоры вместе и создали трехмерный тензор.

В следующем коде мы импортируем библиотеку факела, например import torch.

  • stacktens1 = torch.Tensor([[2, 4], [4, 8]]): Здесь мы объявляем переменную с помощью функции torch.tensor().
  • print(«\n Stack First Tensor :\n», stacktens1) используется для печати первого тензора стека с помощью функции print().
  • stacktens = torch.stack((stacktens1, stacktens2, stacktens3), -1): здесь мы имеем сложенный тензор в измерении -1.
  • print(«\n тензоры в -1 измерении \n», stacktens) используется для печати тензора в -1 измерении с помощью функции print().
  • stacktens = torch.stack((stacktens1, stacktens2, stacktens3), 0): здесь мы складываем тензоры в нулевом измерении.
# import library
import torch
  
# declaring some tensors
stacktens1 = torch.Tensor([[2, 4], [4, 8]])
stacktens2 = torch.Tensor([[3, 4], [5, 10]])
stacktens3 = torch.Tensor([[8, 16], [9, 18]])
  
# Display the tensors
print("\n Stack First Tensor :\n", stacktens1)
print("\n Stack Second Tensor :\n", stacktens2)
print("\n Stack Third Tensor :\n", stacktens3)
  
# stacked tensors in -1 dimension
stacktens = torch.stack((stacktens1, stacktens2, stacktens3), -1)
print("\n tensors in -1 dimension \n", stacktens)
  
# stacked tensors in 0 dimension
stacktens = torch.stack((stacktens1, stacktens2, stacktens3), 0)
print("\n tensors in 0 dimension \n", stacktens)

Выход:

В приведенном ниже выводе вы можете видеть, что 2D-тензор PyTorch должен быть сложен для создания значений трехмерного тензора, которые печатаются на экране.

2D-тензор PyTorch для создания стека для создания 3D-тензора

Тензор 1d сложен 2d в качестве окончательного тензора

Здесь мы генерируем двумерный тензор как окончательный тензор из одномерного тензора PyTorch с помощью функции torch.stack().

В следующем коде мы импортируем необходимую библиотеку, например импорт факела.

  • stacktens1 = torch.Tensor([2, 4, 6]): здесь мы определяем тензор с помощью функции torch.tensor().
  • print(» Первый тензор стека:\n», stacktens1) используется для печати первого тензора стека с помощью функции print().
  • stacktens = torch.stack((stacktens1, stacktens2, stacktens3), 0): здесь мы вызываем функцию stack().
# import required library
import torch
  
# Define some tensors
stacktens1 = torch.Tensor([2, 4, 6])
stacktens2 = torch.Tensor([3, 6, 9])
stacktens3 = torch.Tensor([4, 8, 12])
  
# Display the tensors
print(" Stack First Tensor :\n", stacktens1)
print("\nStack Second Tensor :\n", stacktens2)
print("\n Stack Third Tensor :\n", stacktens3)
  
# Stack the tensors in the 0 dimension
stacktens = torch.stack((stacktens1, stacktens2, stacktens3), 0)
print("\n Join the tensors in the 0 dimension \n", stacktens)
  
#  Stack the tensors in the -1 dimension
stacktens = torch.stack((stacktens1, stacktens2, stacktens3), -1)
print("\n Join the tensors in the -1 dimension \n", stacktens)

Параметры:

После запуска приведенного выше кода мы получаем следующий вывод, в котором видим, что 1d-тензор PyTorch сложен, и генерируем 2d-тензор в качестве окончательного тензора, а значения печатаются на экране.

Тензор PyTorch 1d сложен и генерирует тензор 2d как окончательный тензор

Стек для отображения ошибки, когда входной тензор не имеет одинаковой формы

Здесь мы используем стек PyTorch, который может показать ошибку, когда входной тензор не имеет похожей формы.

Код:

В следующем коде мы импортируем необходимую библиотеку, например import torch.

  • stacktens1 = torch.tensor([1., 3., 6., 10.]): Здесь мы создаем тензор стека с помощью функции torch.tensor().
  • print(«Tensor stacktens:», stacktens1) используется для печати тензорного стека с помощью функции print().
  • s = torch.stack((stacktens1, stacktens2)): здесь мы вызываем функцию stack().
# importing torch
import torch
  
# Creating the stack tensors
stacktens1 = torch.tensor([1., 3., 6., 10.])
stacktens2 = torch.tensor([2., 7., 9.])
  
# Printing the tensors
print("Tensor stacktens:", stacktens1)
print("Tensor stac:", stacktens2)
  
# Stack the tensor using "torch.stack()"
print("Stack the tensors:")
s = torch.stack((stacktens1, stacktens2))
# Print the final tensor after join
print(s)
  
print("Stack the tensors dimension 0:")
s = torch.stack((stacktens1, stacktens2), dim=0)
print(s)
  
print("Stack the tensors dimension 1:")
s = torch.stack((stacktens1, stacktens2), dim=1)
print(s)

Выход:

После запуска приведенного выше кода мы получаем следующий вывод, в котором мы видим, что ошибка отображается, когда входной тензор не имеет той же формы.

Стек PyTorch для отображения ошибки, когда входной тензор не имеет одинаковой формы

Добавить комментарий