Flerstegs-Backpropagering
Precis som Tensorflow tillåter PyTorch att bygga mer komplexa beräkningsgrafer som involverar flera intermediära tensorer.
12345678910111213import torch # Create a 2D tensor with gradient tracking x = torch.tensor([[1.0, 2.0, 3.0], [3.0, 2.0, 1.0]], requires_grad=True) # Define intermediate layers y = 6 * x + 3 z = 10 * y ** 2 # Compute the mean of the final output output_mean = z.mean() print(f"Output: {output_mean}") # Perform backpropagation output_mean.backward() # Print the gradient of x print("Gradient of x:\n", x.grad)
Gradienten av output_mean
med avseende på x
beräknas med hjälp av kedjeregeln. Resultatet visar hur mycket en liten förändring i varje element av x
påverkar output_mean
.
Inaktivering av gradientspårning
I vissa fall kan det vara önskvärt att inaktivera gradientspårning för att spara minne och beräkningsresurser. Eftersom requires_grad=False
är standardbeteendet kan du helt enkelt skapa tensorn utan att ange denna parameter:
x = torch.tensor([[1.0, 2.0, 3.0], [3.0, 2.0, 1.0]])
Swipe to start coding
Du ska bygga ett enkelt neuralt nätverk i PyTorch. Målet är att beräkna gradienten av förlusten med avseende på viktmatrisen.
- Definiera en slumpmässig viktmatris (tensor)
W
med formen1x3
, initialiserad med värden från en uniform fördelning över [0, 1], med gradientspårning aktiverad. - Skapa en inmatningsmatris (tensor)
X
baserad på denna lista:[[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]]
. - Utför matrismultiplikation mellan
W
ochX
för att beräknaY
. - Beräkna medelkvadratfel (MSE):
loss = mean((Y - Ytarget)
2 ). - Beräkna gradienten av förlusten (
loss
) med avseende påW
med hjälp av backpropagation. - Skriv ut den beräknade gradienten för
W
.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 5
Flerstegs-Backpropagering
Svep för att visa menyn
Precis som Tensorflow tillåter PyTorch att bygga mer komplexa beräkningsgrafer som involverar flera intermediära tensorer.
12345678910111213import torch # Create a 2D tensor with gradient tracking x = torch.tensor([[1.0, 2.0, 3.0], [3.0, 2.0, 1.0]], requires_grad=True) # Define intermediate layers y = 6 * x + 3 z = 10 * y ** 2 # Compute the mean of the final output output_mean = z.mean() print(f"Output: {output_mean}") # Perform backpropagation output_mean.backward() # Print the gradient of x print("Gradient of x:\n", x.grad)
Gradienten av output_mean
med avseende på x
beräknas med hjälp av kedjeregeln. Resultatet visar hur mycket en liten förändring i varje element av x
påverkar output_mean
.
Inaktivering av gradientspårning
I vissa fall kan det vara önskvärt att inaktivera gradientspårning för att spara minne och beräkningsresurser. Eftersom requires_grad=False
är standardbeteendet kan du helt enkelt skapa tensorn utan att ange denna parameter:
x = torch.tensor([[1.0, 2.0, 3.0], [3.0, 2.0, 1.0]])
Swipe to start coding
Du ska bygga ett enkelt neuralt nätverk i PyTorch. Målet är att beräkna gradienten av förlusten med avseende på viktmatrisen.
- Definiera en slumpmässig viktmatris (tensor)
W
med formen1x3
, initialiserad med värden från en uniform fördelning över [0, 1], med gradientspårning aktiverad. - Skapa en inmatningsmatris (tensor)
X
baserad på denna lista:[[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]]
. - Utför matrismultiplikation mellan
W
ochX
för att beräknaY
. - Beräkna medelkvadratfel (MSE):
loss = mean((Y - Ytarget)
2 ). - Beräkna gradienten av förlusten (
loss
) med avseende påW
med hjälp av backpropagation. - Skriv ut den beräknade gradienten för
W
.
Lösning
Tack för dina kommentarer!
Awesome!
Completion rate improved to 5single