很抱歉要求您作为新手来使用火炬,但我保证会在文档和Internet中进行大量搜索。
我需要两个主要要求,
第一个是训练一个或多个批次后获得体重增量,
第二个是为模型设置新的权重。
这意味着我想通过自己的方法(使用外部库)更新权重,
有可能实现这一目标吗?
似乎手电筒有一个抽象的module
类[1],但它的接口不能满足我的所有需求。
[1] https://github.com/torch/nn/blob/master/doc/module.md#nn.Module
最佳答案
最后,我通过参考几个同事找到了答案。
正确理解getParameters()
[1]是解决问题的关键。 getParameters()
将获得平坦的parameters
(权重)和gradParameters
(权重增量),而且,这是内存转换,应按文档中的说明仅调用一次。
这意味着getParameters()
的返回值正是我们想要的,并且返回值的更改将反映到原始模型中,在此处更新权重。
因此,我们不仅可以通过parameters
返回的getParameters()
来获取扁平化的权重,还可以通过parameters:copy()
来简单地设置权重。我们绝对可以使用其他torch.Tensor()
方法来修改权重。
[1] https://github.com/torch/nn/blob/master/doc/module.md#flatparameters-flatgradparameters-getparameters
关于machine-learning - 如何获取/设置模型在火炬中的重量(增量)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37505711/