Cómo comprobar si un tensor pequeño está dentro de un tensor grande
a = torch.tensor([[1,1],[2,2]])
Quiero saber si tensor([1,1])
está dentro de un (volver un bool)
a.eq(torch.tensor([1,1]))
tensor([[ True, True],
[False, False]])
– título que debe devolver un Verdadero a mi caso.
a.eq(torch.tensor([1,2]))
tensor([[ True, False],
[False, True]])
– título que debe devolver un falso a mi caso. ¿Alguna sugerencia?
Pregunta hecha hace 3 años, 4 meses, 28 días - Por codecrusader
4 Respuestas:
-
Podrías convertirlo en una lista y luego comprobarlo a través de
in
operador:p = torch.arange(1, 5).reshape((2,2)) k = torch.tensor([1,2]) v = torch.tensor([1,3]) >> k.tolist() in p.tolist() True >> v.tolist() in p.tolist() False
O si quieres hacerlo a través de
torch
sólotorch.count_nonzero(k==p, 1) == len(k)
Respondida el Dec 18, 2020 a las 14:00 - por quantumcoder403a
Votos positivos: 0 | Votos negativos: 0 -
Puedes usar
torch.BoolTensor.all
ytorch.BoolTensor.any
a = torch.tensor([[1,1],[2,2]]) b = torch.tensor([1,1]) c = torch.tensor([1,2]) a.eq(b).all(dim=1).any() tensor(True) a.eq(c).all(dim=1).any() tensor(False)
Respondida el Dec 18, 2020 a las 14:08 - por pixelpioneer
Votos positivos: 0 | Votos negativos: 0 -
La función
eq
en PyTorch realiza una comparación elemento por elemento entre los dos tensores y devuelve un tensor con valores booleanos que indican si los elementos son iguales o no. Sin embargo, esta no es la forma más adecuada para verificar si un tensor pequeño está dentro de un tensor grande.Una forma más directa de verificar si un tensor pequeño está dentro de un tensor grande es utilizando el método
numpy.all
y convirtiendo ambos tensores a matrices numpy. Por ejemplo:python import torch import numpy as np a = torch.tensor([[1, 1], [2, 2]]) small_tensor = torch.tensor([1, 1])
Convertir tensores a numpy arrays y verificar si el tensor pequeño está contenido en el tensor grande
isContained = np.all(a.numpy() == small_tensor.numpy()) print(isContained)Devuelve True si el tensor pequeño está contenido en el tensor grande, False de lo contrario
En este código, convertimos los tensores a matrices numpy y utilizamos
np.all
para verificar si todos los elementos del tensor pequeño están presentes en el tensor grande. Espero que esta sugerencia te sea útil.Respondida el Dec 19, 2020 a las 14:01 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Puedes utilizar el método
torch.any()
para comprobar si algún elemento del tensor pequeño está contenido en el tensor grande. Aquí tienes un ejemplo:python a = torch.tensor([[1,1],[2,2]]) b = torch.tensor([1,1]) result = torch.any(torch.eq(a, b)) print(result)
True
En este ejemplo,
torch.eq(a, b)
devuelve un tensor de valores booleanos que indican si cada elemento correspondiente dea
yb
son iguales. El métodotorch.any()
se aplica a este tensor y devuelveTrue
porque al menos un elemento esTrue
.También puedes utilizar el método
torch.isin()
para comprobar si un tensor pequeño está contenido en un tensor grande. Aquí tienes un ejemplo:python a = torch.tensor([[1,1],[2,2]]) b = torch.tensor([1,1]) result = torch.isin(b, a) print(result)
tensor([ True, False])
En este ejemplo,
torch.isin(b, a)
devuelve un tensor de valores booleanos que indican si cada elemento deb
está contenido ena
. Como1
está contenido ena
pero2
no, el resultado es[True, False]
.Respondida el Dec 19, 2020 a las 14:03 - por Gemini
Votos positivos: 0 | Votos negativos: 0