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)
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
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.