Функция torch.select в PyTorch
Справочное руководство Pytorch torch
torch.selectЭто функция в PyTorch, используемая для выбора среза, соответствующего индексу вдоль указанного измерения. Она возвращает представление среза в указанной позиции индекса по указанному измерению.
Определение функции
torch.select(input, dim, index)
Parameters:
input(Tensor): входной тензор.dim(int): Измерение для выбора.index(int): Индекс для выбора.
Возвращаемое значение:
torch.Tensor: Возвращает срез в указанной позиции индекса (размерность уменьшается на 1).
Примеры использования
Пример
import torch
# Создать тензор 3x4
x = torch.tensor([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
# Выбрать строку с индексом 1 по первому измерению (строки)
y = torch.select(x, dim=0, index=1)
print("Исходный тензор:")
print(x)
print("nВыбрать строку с индексом 1:")
print(y)
# Создать тензор 3x4
x = torch.tensor([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
# Выбрать строку с индексом 1 по первому измерению (строки)
y = torch.select(x, dim=0, index=1)
print("Исходный тензор:")
print(x)
print("nВыбрать строку с индексом 1:")
print(y)
Результат вывода:
原始张量:
tensor([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
选择索引1的行:
tensor([5, 6, 7, 8])
Пример
import torch
# Создать 3D-тензор
x = torch.arange(24).reshape(2, 3, 4)
print("Исходный 3D-тензор:")
print(x)
print("Форма:", x.shape)
# Выбрать элемент с индексом 0 в первом измерении (батч)
y = torch.select(x, dim=0, index=0)
print("nВыбрать dim=0, index=0:")
print(y)
print("Форма:", y.shape)
# Создать 3D-тензор
x = torch.arange(24).reshape(2, 3, 4)
print("Исходный 3D-тензор:")
print(x)
print("Форма:", x.shape)
# Выбрать элемент с индексом 0 в первом измерении (батч)
y = torch.select(x, dim=0, index=0)
print("nВыбрать dim=0, index=0:")
print(y)
print("Форма:", y.shape)
Результат вывода:
原始3D张量:
tensor([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
形状: torch.Size([2, 3, 4])
选择 dim=0, index=0:
tensor([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
形状: torch.Size([3, 4])
Пример
import torch
# Использовать отрицательный индекс
x = torch.tensor([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# Эквивалентный способ выбрать последнюю строку
y = torch.select(x, dim=0, index=-1)
print("Исходный тензор:")
print(x)
print("nВыбрать последнюю строку (index=-1):")
print(y)
# Использовать отрицательный индекс
x = torch.tensor([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# Эквивалентный способ выбрать последнюю строку
y = torch.select(x, dim=0, index=-1)
print("Исходный тензор:")
print(x)
print("nВыбрать последнюю строку (index=-1):")
print(y)
Результат вывода:
原始张量:
tensor([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
选择最后一行 (index=-1):
tensor([7, 8, 9])
Примечание:torch.selectОна возвращает представление, а не копию, поэтому операция эффективна. Похожей функциональности также можно достичь с помощью операций среза, таких какx[index]илиx[index:index+1]。
Другие расширения