Función PyTorch torch.select
Manual de referencia de Pytorch torch
torch.selectEs una función de PyTorch que se utiliza para seleccionar el slice correspondiente al índice a lo largo de la dimensión especificada. Devuelve una vista del slice en la posición de índice específica en la dimensión dada.
Definición de la función
torch.select(input, dim, index)
Parámetros:
input(Tensor): tensor de entrada.dim(int): la dimensión a seleccionar.index(int): el índice a seleccionar.
Valor de retorno:
torch.Tensor: Devuelve el slice en la posición de índice especificada (la dimensión se reduce en 1).
Ejemplos de uso
Ejemplo
import torch
# Crear un tensor de 3x4
x = torch.tensor([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
# Selecciona la fila con índice 1 en la primera dimensión (filas)
y = torch.select(x, dim=0, index=1)
print("Tensor original:")
print(x)
print("nSelecciona la fila con índice 1:")
print(y)
# Crear un tensor de 3x4
x = torch.tensor([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
# Selecciona la fila con índice 1 en la primera dimensión (filas)
y = torch.select(x, dim=0, index=1)
print("Tensor original:")
print(x)
print("nSelecciona la fila con índice 1:")
print(y)
El resultado de salida es:
原始张量:
tensor([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
选择索引1的行:
tensor([5, 6, 7, 8])
Ejemplo
import torch
# Crear un tensor 3D
x = torch.arange(24).reshape(2, 3, 4)
print("Tensor 3D original:")
print(x)
print("Forma:", x.shape)
# Selecciona el elemento en la primera dimensión (batch) con índice 0
y = torch.select(x, dim=0, index=0)
print("nSelecciona dim=0, index=0:")
print(y)
print("Forma:", y.shape)
# Crear un tensor 3D
x = torch.arange(24).reshape(2, 3, 4)
print("Tensor 3D original:")
print(x)
print("Forma:", x.shape)
# Selecciona el elemento en la primera dimensión (batch) con índice 0
y = torch.select(x, dim=0, index=0)
print("nSelecciona dim=0, index=0:")
print(y)
print("Forma:", y.shape)
El resultado de salida es:
原始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])
Ejemplo
import torch
# Usar índice negativo
x = torch.tensor([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# Forma equivalente de seleccionar la última fila
y = torch.select(x, dim=0, index=-1)
print("Tensor original:")
print(x)
print("nSelecciona la última fila (index=-1):")
print(y)
# Usar índice negativo
x = torch.tensor([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# Forma equivalente de seleccionar la última fila
y = torch.select(x, dim=0, index=-1)
print("Tensor original:")
print(x)
print("nSelecciona la última fila (index=-1):")
print(y)
El resultado de salida es:
原始张量:
tensor([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
选择最后一行 (index=-1):
tensor([7, 8, 9])
Nota:torch.selectDevuelve una vista, no una copia, por lo que la operación es eficiente. Una funcionalidad similar también se puede lograr con operaciones de slice, comox[index]ox[index:index+1]。
Otras extensiones