2016-05-29 2 views
1

Sorry für die Frage, wie ein Neuling zu Fackel, aber ich verspreche, viel durch die Dokumente und Internet zu suchen.Wie wird das Gewicht des Modells (Delta) im Brenner erreicht/eingestellt?

Es gibt zwei Hauptanforderungen, die ich brauche, die erste ist, um das Gewicht Delta nach dem Training für eine oder mehrere Chargen zu bekommen, die zweite ist, um das neue Gewicht zu modellieren.

Das bedeutet, ich möchte die Gewichte nach meinen eigenen Methoden (mit externer Bibliothek) aktualisieren, wird es möglich sein, das in Fackel zu erreichen?

Es scheint, dass Fackel eine abstrakte module Klasse [1] hat, aber seine Schnittstelle passt nicht alle meine Bedürfnisse.

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

Antwort

2

Schließlich fand ich die Antwort von auf mehrere meiner Kollegen verweisen.

Das Verständnis der getParameters() [1] korrekt ist der entscheidende Punkt, um das Problem zu lösen. getParameters() wird die parameters (Gewichtungen) und gradParameters (Gewichte Delta) flatten und was mehr ist, es ist ein Speicherübergang und sollte nur einmal wie dokumentiert aufgerufen werden.

Dies bedeutet, dass der zurückgegebene Wert von getParameters() genau das ist, was wir wollen, und die Änderungen im zurückgegebenen Wert werden im ursprünglichen Modell widergespiegelt, in dem die Gewichtungen aktualisiert werden.

So können wir nicht nur die flachen Gewichte durch die parameters von getParameters() zurückgegeben bekommen, sondern auch die Gewichte einfach durch parameters:copy() setzen. Wir können andere torch.Tensor() Methoden verwenden, um die Gewichtungen zu ändern.

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

Verwandte Themen