2016-01-26 1 views
1

J'ai un tenseur de la torche de la taille (1 x n x n x n) et je voudrais choisir aléatoirement l'une des 3 dernières dimensions pour trancher aléatoirement en s puis faire. Par exemple, il pourrait sortir les tenseurs ci-dessous avec une probabilité égale;Torch - Choisissez au hasard la dimension du tenseur à couper

(1 x s x n x n) 
(1 x n x s x n) 
(1 x n x n x s) 

Je me rends compte que je pouvais faire un peu si les déclarations, mais je suis d'autre curieux de savoir s'il y a une option « plus propre » à l'aide d'une fonction comme torch.random(1,4) pour sélectionner la dimension.

Répondre

1

en supposant que vous voulez réduire aléatoirement un bloc d'éléments s parmi n éléments. Nous utilisons :narrow.

n = 100 
s = 20 
x = torch.randn(1, n, n, n) 
y = x:narrow(torch.random(2, 4), torch.random(1, n - s + 1), s) 
+0

Merci! Je ne savais pas à propos de la fonction étroite. – mattdns