看了几个月的理论,总算是开始实践了;学习了几个月,这门学问中数学的应用还挺有意思的,比现在的工作有意思多了。
1、torch.optim.SGD
trainer = torch.optim.SGD(net.parameters(), lr=lr, momentum=0.9 weight_decay=wd)
trainer.zero_grad()
trainer.step()
trainer = torch.optim.SGD(params,lr, momentum, dampenning, weight_decay,nesterov)
神经网络优化器,使训练过程快起来,节省训练神经网络的时间。
pytorh中torch.optim为各种优化算法的包。
使用torch.optim,首先需要构建一个optimizer对象,这个对象能保持当前参数的状态,并基于计算得到的梯度进行参数更新。
trainer:optimizer对象
net.parameters():待优化参数的iterable(w和b的迭代)
trainer.step() 用来更新参数
SGD随机梯度下降,本质上还是实现的批量梯度下降,即使用全部样本的均值来更新学习参数。全部样本,可以是全部数据,也可以是一个batch。因为计算梯度是调用的backword函数,而backword函数是通过损失张量调用的,损失值的计算和样本集的选取息息相关,大多时候我们使用一个batch的样本去计算损失,再调用backward,那么调用sgd的时候使用的是这个batch的梯度去更新可学习参数。