Gradienten in PyTorch
Swipe um das Menü anzuzeigen
Zur Wiederholung: Gradienten sind partielle Ableitungen einer Funktion bezüglich ihrer Eingaben.
Gradienten sind grundlegend bei Optimierungsaufgaben wie dem Training von neuronalen Netzwerken, da sie helfen, Gewichte und Biases zur Fehlerminimierung anzupassen. In PyTorch werden sie automatisch mit dem autograd-Modul berechnet, das Operationen auf Tensors verfolgt und Ableitungen effizient berechnet.
Aktivierung der Gradientenverfolgung
Um die Gradientenverfolgung für einen Tensor zu aktivieren, wird beim Erstellen des Tensors das Argument requires_grad=True verwendet. Dies weist PyTorch an, alle Operationen auf dem Tensor für die Gradientenberechnung zu verfolgen.
1234import torch # Create a tensor with gradient tracking enabled tensor = torch.tensor(2.0, requires_grad=True) print(tensor)
Aufbau eines Rechenbaums
PyTorch erstellt einen dynamischen Rechenbaum, während Operationen an Tensors mit requires_grad=True durchgeführt werden. Dieser Graph speichert die Beziehungen zwischen Tensors und Operationen und ermöglicht so die automatische Differenzierung.
Wir beginnen mit der Definition einer einfachen Polynomfunktion:
y=5x3+2x2+4x+8Das Ziel ist die Berechnung der Ableitung bezüglich x an der Stelle x = 2.
123456import torch # Define the tensor x = torch.tensor(2.0, requires_grad=True) # Define the function y = 5 * x ** 3 + 2 * x ** 2 + 4 * x + 8 print(f"Function output: {y}")
Die Visualisierung dieses Rechenbaums (computational graph), erstellt mit der PyTorchViz-Bibliothek, mag etwas komplex erscheinen, vermittelt jedoch effektiv die dahinterstehende Hauptidee:
Gradientenberechnung
Um den Gradienten zu berechnen, sollte die Methode backward() auf dem Ausgabetensor aufgerufen werden. Dadurch wird die Ableitung der Funktion bezüglich des Eingabetensors berechnet.
Der berechnete Gradient kann anschließend über das Attribut .grad abgerufen werden.
12345678import torch x = torch.tensor(2.0, requires_grad=True) y = 5 * x ** 3 + 2 * x ** 2 + 4 * x + 8 # Perform backpropagation y.backward() # Print the gradient of x grad = x.grad print(f"Gradient of x: {grad}")
Der berechnete Gradient ist die Ableitung von y nach x, ausgewertet bei x = 2.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen