web-dev-qa-db-fra.com

Quelle est la variable volatile dans Pytorch

Qu'est-ce que l'attribut volatile d'une variable dans Pytorch? Voici un exemple de code permettant de définir une variable dans PyTorch.

datatensor = Variable(data, volatile=True)
9
satya

Fondamentalement, définissez l'entrée sur un réseau sur volatile si vous effectuez uniquement une inférence et ne renvoyez pas la propagation afin de conserver la mémoire.

De la docs :

Volatile est recommandé pour le mode purement inférence, quand vous êtes sûr vous n’appelez même pas .backward (). C’est plus efficace que n'importe quel autre autre paramètre autograd - il utilisera la quantité minimale absolue de mémoire pour évaluer le modèle. volatile détermine également que require_grad est False.

Edit: Le mot-clé volatile a été obsolète à partir de pytorch version 0.4.0

15
decrispell

Pour les versions de Pytorch antérieures à 0.4.0, Variable et Tensor étaient deux entités différentes. Pour les variables, vous pouvez spécifier deux indicateurs: volatile et require_grad. Les deux ont été utilisés pour exclure les sous-graphes du calcul de gradient. 

La différence entre volatile et requires_grad réside dans la façon dont l'indicateur est appliqué aux sorties d'une opération. S'il existe même une seule variable volatile = True en tant qu'entrée dans une opération, sa sortie sera également marquée en tant que volatile. Pour requires_grad, vous avez besoin que toutes les entrées de cette opération soient marquées requires_grad = False, de sorte que la sortie soit également marquée de la même manière.

De Pytorch 0.4.0, Tensors et Variables ont été fusionnés et l'indicateur volatile est obsolète. 

0
Jadiel de Armas