pytroch优化器
栏目:行业动态 发布时间:2024-05-20 19:06:37

pytorch提供了许多迭代器,可以方便地调用

$ from torch import optim

$ optimizer=optim.SGD(model.parameters(), lr=0.1, momentum=0.9)

这里需要注意优化器的输入参数,其中第一个形参需要传入一个可迭代或者说可遍历的对象,类似于Dataloader的返回值的类型,但这里用到的是需要优化的参数,也就是模型参数

named_parameters()返回的迭代器中,每个元组打包了2个内容,分别是layer-namelayer-param(网络层的名字和参数)

parameters()返回的迭代器只有后者layer-param(网络层参数)

只有model.parameters()中包含的参数被更新,不更新的参数为model.buffer()中的参数BatchNormalization层中的参数是默认保存在model.buffers()中的。model.buffers()中的参数可以设置required_grad为True来计算梯度,但是不能用optimizer进行更新。

$ self.tensor=torch.randn(size=(1, 1, 5, 5))

$ self.register_buffer('my_buffer', self.tensor)

当变量保存在model.buffers()中后,也可以在model.statedict()中查看到buffer中的参数。

平台注册入口