【问题标题】:How to get/set model's weight (delta) in torch?如何在火炬中获取/设置模型的重量(增量)?
【发布时间】:2016-09-27 02:32:14
【问题描述】:

很抱歉作为新手询问torch,但我保证会通过文档和互联网进行大量搜索。

我需要两个主要要求, 第一个是在训练一个或多个批次后获得权重增量, 第二个是给模型设置新的权重。

这意味着我想通过自己的方法(使用外部库)更新权重, 有可能在torch中实现吗?

torch 似乎有一个抽象的module 类 [1],但它的接口并不能满足我的所有需求。

[1]https://github.com/torch/nn/blob/master/doc/module.md#nn.Module

【问题讨论】:

    标签: machine-learning neural-network torch


    【解决方案1】:

    最后我参考了几位同事找到了答案。

    正确理解getParameters()[1]是解决问题的关键。 getParameters() 将得到扁平化的parameters(权重)和gradParameters(权重增量),而且,这是一个内存转换,并且应该只按照文档说明调用一次。

    这意味着getParameters()的返回值正是我们想要的,返回值的变化将反映到更新权重的原始模型中。

    所以我们不仅可以通过getParameters() 返回的parameters 获得展平权重,还可以通过parameters:copy() 简单地设置权重。我们完全可以使用其他torch.Tensor() 方法来修改权重。

    [1]https://github.com/torch/nn/blob/master/doc/module.md#flatparameters-flatgradparameters-getparameters

    【讨论】:

      猜你喜欢
      • 2021-07-19
      • 2022-10-23
      • 2022-07-20
      • 2021-05-21
      • 2020-09-21
      • 1970-01-01
      • 2017-02-23
      • 2020-06-22
      • 1970-01-01
      相关资源
      最近更新 更多