在Python中,backward()函數(shù)通常用于反向傳播,它是神經(jīng)網(wǎng)絡(luò)訓(xùn)練中的一個重要步驟。
使用backward()函數(shù)的一般步驟如下:
具體示例代碼如下:
import torch
# 定義神經(jīng)網(wǎng)絡(luò)模型
model = torch.nn.Linear(in_features=10, out_features=1)
# 定義輸入數(shù)據(jù)和標(biāo)簽數(shù)據(jù)
input_data = torch.randn(100, 10)
target = torch.randn(100, 1)
# 前向傳播
output = model(input_data)
# 計算損失函數(shù)
loss = torch.nn.functional.mse_loss(output, target)
# 反向傳播
loss.backward()
# 更新模型參數(shù)
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
optimizer.step()
在上述示例代碼中,我們首先定義了一個簡單的線性模型(torch.nn.Linear)作為我們的神經(jīng)網(wǎng)絡(luò)模型。然后,我們生成了一個隨機(jī)的輸入數(shù)據(jù)input_data和對應(yīng)的標(biāo)簽target。接下來,我們進(jìn)行一次前向傳播,將輸入數(shù)據(jù)input_data傳入模型,并得到模型的輸出output。然后,我們根據(jù)輸出output和標(biāo)簽target計算了一個均方誤差損失函數(shù)loss。接下來,我們調(diào)用backward()函數(shù),自動計算了損失函數(shù)對于模型參數(shù)的梯度。最后,我們使用優(yōu)化算法(torch.optim.SGD)根據(jù)梯度更新模型參數(shù)。