PyTorch torch.is_grad_enabled Funktion


PyTorch torch Referenzhandbuch

torch.is_grad_enabledEs ist eine Funktion in PyTorch, mit der überprüft wird, ob die Gradientenberechnung derzeit aktiviert ist. Sie gibt einen booleschen Wert zurück, der angibt, ob die aktuelle PyTorch-Funktion zur Gradientenberechnung aktiviert oder deaktiviert ist.

Dies ist sehr nützlich, wenn Code geschrieben wird, der abhängig vom Gradientenstatus unterschiedliche Logik ausführen muss.

Funktionsdefinition

torch.is_grad_enabled()

Parameters:

  • Keine Parameter.

Rückgabewert:

  • Gibt einen booleschen Wert zurück: Wenn die Gradientenberechnung derzeit aktiviert ist, gibt er true zurückTrue; andernfalls wird zurückgegebenFalse。

Anwendungsbeispiele

Beispiel 1: Grundlegende Verwendung

Beispiel

import torch

# Standardmäßig ist die Gradientenberechnung aktiviert
print("Standardzustand:", torch.is_grad_enabled())

"In no_grad:"
with torch.no_grad():
    print(# Nach dem Verlassen wiederhergestellt, torch.is_grad_enabled())

"Nach dem Verlassen von no_grad:"
print(Die Ausgabe ist:, torch.is_grad_enabled())

Beispiel 2: Verwendung mit set_grad_enabled

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

Beispiel 2: Verwendung mit set_grad_enabled

Beispiel

import torch

"Aktueller Zustand:"
print(# Gradienten deaktivieren, torch.is_grad_enabled())

"Nach Deaktivierung:"
torch.set_grad_enabled(False)
print(# Gradienten aktivieren, torch.is_grad_enabled())

"Nach der Aktivierung:"
torch.set_grad_enabled(True)
print(Die Ausgabe ist:, torch.is_grad_enabled())

Beispiel 3: Verwendung in bedingten Anweisungen

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

Beispiel 3: Verwendung in bedingten Anweisungen

Beispiel

import torch

def process_tensor(x):
    "Gradientenberechnung aktiviert"
    if torch.is_grad_enabled():
        print(# Backpropagation kann durchgeführt werden)
        "Gradientenberechnung deaktiviert"
        y = x * 2
        return y
    else:
        print(# Schnelle Berechnung, die Speicher spart)
        # Verschiedene Zustände testen
        y = x * 2
        return y

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

print("n=== Gradient deaktiviert ===")
result1 = process_tensor(x)

print(Die Ausgabe ist:)
with torch.no_grad():
    result2 = process_tensor(x)

Beispiel 4: Verwendung in einer benutzerdefinierten Schicht

=== Enable gradient ===
Enable gradient computation

=== Disable gradient ===
Disable gradient computation

Beispiel 4: Verwendung in einer benutzerdefinierten Schicht

Beispiel

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):
        "Trainingsmodus"
        if torch.is_grad_enabled():
            print(# Normale Berechnung während des Trainings)
            "Inferenzmodus"
            return torch.mm(x, self.weight)
        else:
            print(# Eine optimierte Version kann während der Inferenz verwendet werden)
            # Training
            with torch.no_grad():
                return torch.mm(x, self.weight)

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

# Inferenz
layer.train()
output1 = layer(x)

Die Ausgabe ist:
layer.eval()
with torch.no_grad():
    output2 = layer(x)

Verwandte Funktionen

Training mode
Inference mode

Verwandte Funktionen

  • torch.no_grad(): Kontextmanager, der die Gradientenberechnung ermöglicht.
  • torch.enable_grad(): Legt fest, ob die Gradientenberechnung aktiviert ist.
  • torch.set_grad_enabled(grad)Hinweise

Hinweise

  • is_grad_enabledEs prüft den globalen Status der Gradientenberechnung, nicht den des einzelnen Tensors.
  • Attributs.requires_gradWenn Sie generischen Code schreiben, können Sie diese Funktion verwenden, um je nach aktuellem Zustand unterschiedliche Optimierungsstrategien auszuführen.
  • PyTorch torch Referenzhandbuch

Andere Erweiterungen

KI denkt nach...