【极简】Pytorch中的register_buffer()

news/2025/2/5 20:42:51/

register buffer

定义模型能用torch.save保存的、但是不更新参数。

使用:只要是nn.Module的子类就能直接self.调用使用:

class A(nn.Module):
#...
self.register_buffer('betas', torch.linspace(beta_1, beta_T, T).double())
#...

手动定义参数

上述的参数显然可以直接用一个变量直接定义超参。但是缺点是在用torch.save()保存的时候不能保存在参数里面,只能用个文本文件保存在外面。不能直接用torch.load加载,不是很方便。

举个例子,假设你有100个超参,难不成要一个一个记录之后,手动造轮子解析保存的txt嘛?当然也行,但是麻烦。
就比如Diffusion Model中的beta和alpha,在每个timestep时候都是不一样的,这时候手动保存会相当麻烦,用register buffer会相当方便。

普通参数

一般来说模型中的可变参数都是nn.Parameter()类的,这些都是可变的,optimizer会去优化它们。

要是跟register buffer硬凑在一起,把Parameter的require_grad改成False也能充当。但是何必呢?


http://www.ppmy.cn/news/1345148.html

相关文章

React+Antd+tree实现树多选功能(选中项受控+支持模糊检索)

1、先上效果 树型控件,选中项形成一棵新的树,若父选中,子自动选中,子取消,父不取消,子选中,所有的父节点自动取消。同时支持模糊检索,会检索出所有包含该内容的关联节点。 2、环境准…

Docker- chapter 1

note 1: docker 利用 volume 进行 presist data。 eg : compose.yaml: volumes:database: //# named db by self list golbal volumes: docker volume ls # the volumes on the disk inpect someone volume: docker volume inspect m…

DataX详解和架构介绍

系列文章目录 一、 DataX详解和架构介绍 二、 DataX源码分析 JobContainer 三、DataX源码分析 TaskGroupContainer 四、DataX源码分析 TaskExecutor 五、DataX源码分析 reader 六、DataX源码分析 writer 七、DataX源码分析 Channel 文章目录 系列文章目录DataX是什么&#xff…

4、安全开发-Python-蓝队项目流量攻击分析文件动态监控图片隐写技术

用途:个人学习笔记,有所借鉴,欢迎指正! 总结: (1)使用python脚本Scapy库实现指定网卡的流量抓包分析 (2)使用python脚本Watchdog实现指定目录文件行为监控 (…

二叉树(3)——堆的应用

1 堆排序 堆排序是一个选择排序 这里我们可以直接用前面所讲的,先将数组中的数根据插入都插入到堆里,然后再一个一个取Top堆顶元素。但是我们要知道,这样做有两个不好的地方: 如果我们事先并没有实现堆的插入删除,就…

电力负荷预测 | 基于LSTM、TCN的电力负荷预测(Python)

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 电力负荷预测 | 基于LSTM、TCN的电力负荷预测(Python) 源码设计 #------------------

Doris中的本地routineload环境,用于开发回归测试用例

----------------2024-2-6-更新-------------- doris的routineload,就是从kafka中加载数据到表,特点是定时、周期性的从kafka取数据。 要想在本地开发测试routine load相关功能,需要配置kafka环境,尤其是需要增加routine load回…

论文阅读-通过云特征增强的深度学习预测云工作负载转折点

论文名称:Cloud Workload Turning Points Prediction via Cloud Feature-Enhanced Deep Learning 摘要 云工作负载转折点要么是代表工作负载压力的局部峰值点,要么是代表资源浪费的局部谷值点。预测这些关键点对于向系统管理者发出警告、采取预防措施以…