Fonction torch.is_grad_enabled de PyTorch


Manuel de référence Pytorch torch

torch.is_grad_enabledIl s'agit d'une fonction de PyTorch utilisée pour vérifier si le calcul des gradients est actuellement activé. Elle renvoie une valeur booléenne indiquant si la fonctionnalité actuelle de calcul des gradients de PyTorch est activée ou désactivée.

Ceci est très utile lors de l'écriture de code qui doit exécuter une logique différente en fonction de l'état du gradient.

Définition de fonction

torch.is_grad_enabled()

Parameters:

  • Aucun paramètre.

Valeur de retour:

  • Renvoie une valeur booléenne : si le calcul du gradient est actuellement activé, renvoieTrue; sinon renvoieFalse。

Exemples d'utilisation

Exemple 1 : Utilisation de base

Exemple

import torch

# Par défaut, le calcul du gradient est activé
print("État par défaut :", torch.is_grad_enabled())

"Dans no_grad :"
with torch.no_grad():
    print(# Restauré après la sortie, torch.is_grad_enabled())

"Après la sortie de no_grad :"
print(La sortie est :, torch.is_grad_enabled())

Exemple 2 : Utilisation avec set_grad_enabled

默认状态: True
在 no_grad 中: False
退出 no_grad 后: True

Exemple 2 : Utilisation avec set_grad_enabled

Exemple

import torch

"État actuel :"
print(# Désactiver les gradients, torch.is_grad_enabled())

"Après désactivation :"
torch.set_grad_enabled(False)
print(# Activer les gradients, torch.is_grad_enabled())

"Après activation :"
torch.set_grad_enabled(True)
print(La sortie est :, torch.is_grad_enabled())

Exemple 3 : Utilisation dans des instructions conditionnelles

当前状态: True
禁用后: False
启用后: True

Exemple 3 : Utilisation dans des instructions conditionnelles

Exemple

import torch

def process_tensor(x):
    "Calcul des gradients activé"
    if torch.is_grad_enabled():
        print(# La rétropropagation peut être effectuée)
        "Calcul des gradients désactivé"
        y = x * 2
        return y
    else:
        print(# Calcul rapide qui économise de la mémoire)
        # Tester différents états
        y = x * 2
        return y

"=== Gradient activé ==="
x = torch.tensor([1.0, 2.0, 3.0])

print("n=== Gradient désactivé ===")
result1 = process_tensor(x)

print(La sortie est :)
with torch.no_grad():
    result2 = process_tensor(x)

Exemple 4 : Utilisation dans une couche personnalisée

=== Enable gradient ===
Enable gradient computation

=== Disable gradient ===
Disable gradient computation

Exemple 4 : Utilisation dans une couche personnalisée

Exemple

import torch
import torch.nn as nn

class CustomLayer(nn.Module):
    def __init__(self):
        super().__init__()
        self.weight = nn.Parameter(torch.randn(10, 10))

    def forward(self, x):
        "Mode d'entraînement"
        if torch.is_grad_enabled():
            print(# Calcul normal pendant l'entraînement)
            "Mode d'inférence"
            return torch.mm(x, self.weight)
        else:
            print(# Une version optimisée peut être utilisée pendant l'inférence)
            # Entraînement
            with torch.no_grad():
                return torch.mm(x, self.weight)

layer = CustomLayer()
x = torch.randn(5, 10)

# Inférence
layer.train()
output1 = layer(x)

La sortie est :
layer.eval()
with torch.no_grad():
    output2 = layer(x)

Fonctions associées

Training mode
Inference mode

Fonctions associées

  • torch.no_grad(): Gestionnaire de contexte qui active le calcul du gradient.
  • torch.enable_grad(): Définit si le calcul du gradient est activé.
  • torch.set_grad_enabled(grad)Notes

Notes

  • is_grad_enabledIl vérifie l'état global du calcul du gradient, pas celui d'un seul tenseur
  • attribut.requires_gradLorsque vous écrivez du code générique, vous pouvez utiliser cette fonction pour exécuter différentes stratégies d'optimisation en fonction de l'état actuel.
  • Manuel de référence Pytorch torch

Autres extensions

Réflexion de l'IA...