2017-02-17 3 views
0

Gibt es eine Möglichkeit, die elastische Ausbreitung auf Tensorflow zu verwenden? Ich weiß, dass es eine Reihe von Strategien zur Rückvermehrung gibt. Gibt es einen, der in der Nähe von rPorp ist? Kann ich meine eigene Implementierung der elastischen Übertragung einfügen?Verwendung der elastischen Ausbreitung auf Tensorflow

Antwort

1

Es gibt keine rprop-Implementierung in Tensorflow, obwohl es ziemlich trivial wäre, eine zu erstellen. Sie können einen erstellen, indem Sie einen Op schreiben, oder direkt in Python, indem Sie Ops kombinieren.

Es gibt eine RMSProp, die eine andere Sache ist.

Beachten Sie, dass RProp nicht gut mit stochastischen Updates funktioniert. Die Losgrößen müssten sehr groß sein, damit es funktioniert.

+0

Interessant. Können Sie etwas dazu sagen, warum RProp bei stochastischen Updates nicht gut funktioniert? Wenn der Grund dafür ist, dass die Änderung des Vorzeichens des Gradienten kein starkes Überschwingen ist, kann man dies durch Anhängen von Gradienten korrigieren, bevor man die Heuristik anwendet. Oder ist das ein fundamentalerer Grund? Eine Referenz, die zeigt, dass das auch gut wäre ... – buc030

+0

Ich denke, es ist wahrscheinlich reparierbar. Die Abklingregel, wenn Sie einen Vorzeichenwechsel treffen, muss wahrscheinlich angepasst werden, insbesondere vor der Konvergenz. Sie müssten dies tun, ohne mehr Speicher hinzuzufügen, um die Speichernutzung zu begrenzen, und sicherstellen, dass die Schritte monoton abnehmen und quadratisch addierbar sind. – drpng

0

RProp und RMSProp sind ziemlich ähnlich. Sie vergleichen beide das Vorzeichen des Gradienten des aktuellen Stapels (oder einzelner Stichproben) mit dem vorherigen, um einen eindeutigen Wert für jeden Parameter zu aktualisieren (in der Regel multipliziert mit 1,2, wenn die Zeichen übereinstimmen, und um 0,5, wenn dies nicht der Fall ist). Während RProp jedoch jeden Stapelgradienten vergleicht, verwendet RMSProp einen Rabattfaktor, um einen laufenden Durchschnitt für den Vergleich der Zeichen zu erhalten. RProp verwendet diesen eindeutigen Wert, um einen absoluten Schritt in Richtung des Gradienten zu machen, während RMSProp den Wert und den Gradienten multipliziert.

RProp funktioniert gut für größere Chargen, aber funktioniert nicht gut für stochastische Updates, da das Vorzeichen des Gradienten flimmert, was dazu führt, dass sich die Schritte dem Minimum nähern, was das Lernen stoppt. Der laufende Durchschnitt von RMSProp löst dieses Problem. Aber weil RMSProp den Wert und den Gradienten multipliziert, ist es anfälliger für Sättigung als RProp (zumindest für Sigmoid und Tanh - aber Sie können natürlich Relu oder Leaky Relu verwenden, um das zu umgehen).

Verwandte Themen