最適化関数によるテンソルの更新(2)
optimの提供する最適化器には、複数のテンソルを与えることができます。
ここでは2つのテンソルを与える例を示します。(1) のように、リストで渡しています。
code:sgd.py
import torch as pt
import torch.optim as optim
lr = 1 # 学習率
x1 = pt.tensor(1, 1], [1, 1, dtype=pt.float, requires_grad=True)
x2 = pt.tensor(1, 1], [1, 1, dtype=pt.float, requires_grad=True)
x1.grad = pt.tensor(0.1, 0.2], [0.3, 0.4, dtype=pt.float)
x2.grad = pt.tensor(-0.1, -0.2], [-0.3, -0.4, dtype=pt.float)
print('# 実験1')
print('* Before')
print(x1)
print(x1.grad)
print(x2)
print(x2.grad)
optimizer = optim.SGD(x1, x2, lr=lr) # (1) optimizer.step() # ここで操作
print('* After')
print(x1)
print(x2)
(1)で最適化器に渡したx1, x2に対して操作を行うことができます。
このように、optimの提供する最適化器は複数のテンソルをターゲットにすることが可能です。
/icons/hr.icon
※ ブラウザのバックボタンで戻る