2016-05-29 12 views
1

申し訳ありませんトーチに初心者として頼んで申し訳ありませんが、私は文書やインターネットを通じて多くの検索を約束します。トーチでモデルの重量(デルタ)を取得/設定する方法は?

私が必要とする2つの主な要求があります。 最初のものは、1つまたは複数のバッチのトレーニング後に重量デルタを取得するものです。 2番目のモデルは新しい重量をモデルに設定することです。

これは私自身の方法(外部ライブラリを使用)で重みを更新することを意味し、 これをトーチで達成することは可能でしょうか?

トーチは抽象的なmoduleクラス[1]を持っているようですが、そのインターフェイスが私の必要とするものすべてに適合していないようです。

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

答えて

2

最後に、私は私の同僚のいくつかを参照して答えを見つけました。

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

関連する問題