【极简】Pytorch中的register_buffer()

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也能充当。但是何必呢?

相关推荐

  1. Pytorchregister_buffer()

    2024-02-02 13:14:01       50 阅读
  2. 001-Windows下PyTorch开发环境配置(上)

    2024-02-02 13:14:01       43 阅读
  3. Vue父子组件值传递【版】

    2024-02-02 13:14:01       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-02 13:14:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-02 13:14:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-02 13:14:01       82 阅读
  4. Python语言-面向对象

    2024-02-02 13:14:01       91 阅读

热门阅读

  1. MySQL运维实战(5.4) MySQL元数据乱码

    2024-02-02 13:14:01       56 阅读
  2. 【springBoot】统一功能处理

    2024-02-02 13:14:01       54 阅读
  3. InDesign Server-功能介绍-IDML 文件-ID插件

    2024-02-02 13:14:01       45 阅读
  4. 第7章 网络管理

    2024-02-02 13:14:01       42 阅读
  5. ArcGIS Pro字段编号相关代码

    2024-02-02 13:14:01       55 阅读
  6. 第39章 补充定义7 仿射空间解释投影矩阵

    2024-02-02 13:14:01       50 阅读
  7. Python入门指北十七

    2024-02-02 13:14:01       51 阅读
  8. android 音频调试技巧

    2024-02-02 13:14:01       60 阅读
  9. HTML优化SEO的实用技巧

    2024-02-02 13:14:01       51 阅读
  10. undefined reference to symbol ‘pow@@GLIBC_2.0

    2024-02-02 13:14:01       57 阅读