当前位置: 首页 > 中学作文 > 初二作文

【Pytorch】optimizer原理

时间:2024-07-29 14:56:23 初二作文 我要投稿

【参考笔记】
【源码链接
举个栗子,定义一个全连接网络:

 
 
 

得到:

 
 
 

得到:

 

其中2x2的矩阵是net的权重矩阵,1x2为偏置矩阵,其余为优化器的其它参数,所以说param_groups保存了优化器的全部数据,这个下面的state_dict()不同。

参考下面源码中对state_dict()的定义,可以看出state_dict()包含优化器状态state和参数param_groups两个参数

 

打印优化器参数:

 

可以到优化器的完整参数如下:

 

打印优化器完整状态(状态+参数):

 

可以到优化器的状态如下:

 

保存优化器的完整状态:

 
 

恢复优化器的完整状态:

 
 

optimizer.zero_grad()源码定义如下:

 

这个遍历过程就是获取optimizer的param_groups属性的字典,之中的[“params”],之中的所有参数,通过遍历设定每个参数的梯度值为0。

直接看源码:

 

优化器的step()函数负责更新参数值,但是其具体实现对于不同的优化算法是不同的,所以optimizer类只是定义了这种行为,但是并没有给出具体实现。

【其他参考资料】

平台注册入口