热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

PyTorch中的register_parameter和register_buffer有什么区别?

如何解决《PyTorch中的register_parameter和register_buffer有什么区别?》经验,为你挑选了1个好方法。

参数在训练过程中被更改,也就是说,它们是在神经网络训练过程中学习到的东西,但是什么是缓冲区?

在神经网络训练中是学到的吗?



1> Shai..:

Pytorch doc用于register_buffer()方法读取

通常用于注册不应被视为模型参数的缓冲区。例如,BatchNorm running_mean不是参数,而是持久状态的一部分。

如您所见,在训练过程中使用SGD学习并更新了模型参数
但是,有时还有其他数量属于模型“状态”的一部分,应
另存为state_dict
-移至模型的其余参数cuda()cpu()与之一起使用。
-转换成float/ half/ double与模型的参数的其余部分。
将这些“参数”注册为模型buffer可以使pytorch跟踪它们并像常规参数一样保存它们,但是可以防止pytorch使用SGD机制更新它们。

用于缓冲的一个例子中可以找到_BatchNorm模块,其中running_meanrunning_varnum_batches_tracked通过累积通过所述层转发的数据的统计信息被登记为缓冲器和更新。这与使用常规SGD优化学习数据的仿射变换的参数weightbias参数相反。


推荐阅读
author-avatar
孙誉嘉两_365
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有