得到:
得到:
其中2x2的矩阵是net的权重矩阵,1x2为偏置矩阵,其余为优化器的其它参数,所以说param_groups保存了优化器的全部数据,这个下面的state_dict()不同。
参考下面源码中对state_dict()的定义,可以看出state_dict()包含优化器状态state和参数param_groups两个参数。
打印优化器参数:
可以到优化器的完整参数如下:
打印优化器完整状态(状态+参数):
可以到优化器的状态如下:
保存优化器的完整状态:
恢复优化器的完整状态:
optimizer.zero_grad()源码定义如下:
这个遍历过程就是获取optimizer的param_groups属性的字典,之中的[“params”],之中的所有参数,通过遍历设定每个参数的梯度值为0。
直接看源码:
优化器的step()函数负责更新参数值,但是其具体实现对于不同的优化算法是不同的,所以optimizer类只是定义了这种行为,但是并没有给出具体实现。