pytorch神經網絡特殊的優化器使用的一些注意點筆記

詳情可參考官方文檔

所有優化器都實現一種step()更新參數的方法。它可以以兩種方式使用:

optimizer.step()

這是大多數優化程序支持的簡化版本。一旦用來計算梯度,就可以調用該函數 backward()。

例:

for input, target in dataset:
    optimizer.zero_grad()
    output = model(input)
    loss = loss_fn(output, target)
    loss.backward()
    optimizer.step()

optimizer.step(closure)

一些優化算法(例如共軛梯度和LBFGS)需要多次重新評估函數,因此您必須傳遞一個閉包以允許它們重新計算模型。閉合應清除梯度,計算損耗,然後將其返回。

例:

for input, target in dataset:
    def closure():
        optimizer.zero_grad()
        output = model(input)
        loss = loss_fn(output, target)
        loss.backward()
        return loss
    optimizer.step(closure)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章