Hallo, ich bin Xiaozhuang!
Über den automatischen Ableitungsvorgang in Pytorch stellen wir das Konzept der automatischen Ableitung in Pytorch vor.
Die automatische Ableitung ist eine wichtige Funktion des Deep-Learning-Frameworks, die zur Berechnung von Gradienten und zur Erzielung von Parameteraktualisierungen und -optimierungen verwendet wird.
PyTorch ist ein häufig verwendetes Deep-Learning-Framework, das dynamische Berechnungsdiagramme und automatische Ableitungsmechanismen verwendet, um den Gradientenberechnungsprozess zu vereinfachen.
Automatische Ableitung ist eine wichtige Funktion des Machine-Learning-Frameworks. Sie kann die Ableitung (Gradient) einer Funktion automatisch berechnen und so den Prozess des Trainings von Deep-Learning-Modellen vereinfachen. Beim Deep Learning enthalten Modelle oft eine große Anzahl von Parametern und die manuelle Berechnung von Gradienten kann komplex und fehleranfällig werden. PyTorch bietet eine automatische Ableitungsfunktion, mit der Benutzer problemlos Gradienten berechnen und Backpropagation durchführen können, um Modellparameter zu aktualisieren. Die Einführung dieser Funktion verbessert die Effizienz und Benutzerfreundlichkeit von Deep Learning erheblich.
Die automatische Ableitungsfunktion von PyTorch basiert auf dynamischen Berechnungsdiagrammen. Ein Berechnungsdiagramm ist eine Diagrammstruktur, die zur Darstellung des Funktionsberechnungsprozesses verwendet wird, wobei Knoten Operationen und Kanten den Datenfluss darstellen. Im Gegensatz zu statischen Berechnungsdiagrammen kann die Struktur dynamischer Berechnungsdiagramme dynamisch basierend auf dem tatsächlichen Ausführungsprozess generiert werden, anstatt im Voraus definiert zu werden. Dieses Design macht PyTorch flexibel und skalierbar, um sich an unterschiedliche Computeranforderungen anzupassen. Durch dynamische Berechnungsdiagramme kann PyTorch den Verlauf von Vorgängen aufzeichnen, Backpropagation durchführen und bei Bedarf Gradienten berechnen. Damit ist PyTorch eines der am weitesten verbreiteten Frameworks im Bereich Deep Learning.
In PyTorch wird jede Aktion des Benutzers aufgezeichnet, um das Berechnungsdiagramm zu erstellen. Wenn der Gradient berechnet werden muss, kann PyTorch auf diese Weise eine Rückausbreitung gemäß dem Berechnungsdiagramm durchführen und automatisch den Gradienten jedes Parameters zur Verlustfunktion berechnen. Dieser auf dynamischen Berechnungsdiagrammen basierende automatische Ableitungsmechanismus macht PyTorch flexibel und skalierbar und eignet sich daher für verschiedene komplexe neuronale Netzwerkstrukturen.
In PyTorch ist Tensor die grundlegende Datenstruktur für die automatische Ableitung. Tensoren ähneln mehrdimensionalen Arrays in NumPy, verfügen jedoch über zusätzliche Funktionen wie die automatische Ableitung. Über die Torch.Tensor-Klasse können Benutzer Tensoren erstellen und verschiedene Operationen an ihnen ausführen.
import torch# 创建张量x = torch.tensor([2.0], requires_grad=True)
Im obigen Beispiel bedeutet require_grad=True, dass wir diesen Tensor automatisch differenzieren wollen.
Jede ausgeführte Operation erstellt einen Knoten im Computergraphen. PyTorch bietet verschiedene Tensoroperationen wie Addition, Multiplikation, Aktivierungsfunktionen usw., die Spuren im Berechnungsdiagramm hinterlassen.
# 张量操作y = x ** 2z = 2 * y + 3
Im obigen Beispiel werden die Berechnungsvorgänge von y und z im Berechnungsdiagramm aufgezeichnet.
Sobald das Berechnungsdiagramm erstellt ist, kann die Backpropagation durchgeführt werden, indem die Methode .backward() aufgerufen wird, um den Gradienten automatisch zu berechnen.
# 反向传播z.backward()
An diesem Punkt kann der Gradient von x durch Zugriff auf x.grad ermittelt werden.
# 获取梯度print(x.grad)
Manchmal möchten wir die Gradientenverfolgung für bestimmte Vorgänge deaktivieren. Dazu können wir den Kontextmanager Torch.no_grad() verwenden.
with torch.no_grad():# 在这个区域内的操作不会被记录在计算图中w = x + 1
In der Trainingsschleife ist es normalerweise notwendig, die Gradienten vor jeder Backpropagation zu löschen, um eine Gradientenakkumulation zu vermeiden.
# 清零梯度x.grad.zero_()
Um den Prozess der automatischen Ableitung genauer zu demonstrieren, betrachten wir ein einfaches lineares Regressionsproblem. Wir definieren ein lineares Modell und eine mittlere quadratische Fehlerverlustfunktion und verwenden eine automatische Ableitung, um die Modellparameter zu optimieren.
import torch# 数据准备X = torch.tensor([[1.0], [2.0], [3.0]])y = torch.tensor([[2.0], [4.0], [6.0]])# 模型参数w = torch.tensor([[0.0]], requires_grad=True)b = torch.tensor([[0.0]], requires_grad=True)# 模型和损失函数def linear_model(X, w, b):return X @ w + bdef mean_squared_error(y_pred, y_true):return ((y_pred - y_true) ** 2).mean()# 训练循环learning_rate = 0.01epochs = 100for epoch in range(epochs):# 前向传播y_pred = linear_model(X, w, b)loss = mean_squared_error(y_pred, y)# 反向传播loss.backward()# 更新参数with torch.no_grad():w -= learning_rate * w.gradb -= learning_rate * b.grad# 清零梯度w.grad.zero_()b.grad.zero_()# 打印最终参数print("训练后的参数:")print("权重 w:", w)print("偏置 b:", b)
In diesem Beispiel definieren wir ein einfaches lineares Modell und eine mittlere quadratische Fehlerverlustfunktion. Durch mehrere iterative Trainingsschleifen werden die Parameter w und b des Modells optimiert, um die Verlustfunktion zu minimieren.
Endlich
Durch dynamische Berechnungsdiagramme und Gradientenberechnungen können Benutzer problemlos komplexe neuronale Netzwerkstrukturen definieren und Optimierungsalgorithmen wie den Gradientenabstieg durch automatische Ableitung implementieren.
Dadurch können sich Deep-Learning-Forscher und Ingenieure mehr auf Modelldesign und Experimente konzentrieren, ohne sich um die Details von Gradientenberechnungen kümmern zu müssen.
Das obige ist der detaillierte Inhalt vonVerstehen Sie die Kernfunktionen von Pytorch genau: automatische Ableitung!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!