2017-02-19 4 views
5

Ich bin wirklich neu in Keras so verzeih mir, wenn meine Frage ein bisschen albern ist. Ich habe Keras in meinem System mit den Standardmethoden installiert und es funktioniert gut. Ich möchte Keras einen neuen Optimierer hinzufügen, so dass ich "optimizer = mynewone" unter der Funktion model.compile leicht erwähnen kann. Wie ändere ich den Code "optimizer.py" in Keras und stelle sicher, dass sich die Änderung in meiner Keras-Umgebung widerspiegelt. Hier ist, was ich versucht:So ändern Keras Optimierer Code

nehme ich an den Optimierer Namen von rmsprop zu rmsprops im Code ändern ich die folgende Fehlermeldung erhalten:

model.compile(loss='binary_crossentropy', optimizer='rmsprops', metrics= ['accuracy']) 
Traceback (most recent call last): 

File "<ipython-input-33-40773d534448>", line 1, in <module> 
model.compile(loss='binary_crossentropy', optimizer='rmsprops', metrics=['accuracy']) 

File "/home/kiran/anaconda/lib/python3.5/site-packages/keras/models.py", line 589, in compile 
**kwargs) 

File "/home/kiran/anaconda/lib/python3.5/site-packages/keras/engine/training.py", line 469, in compile 
self.optimizer = optimizers.get(optimizer) 

File "/home/kiran/anaconda/lib/python3.5/site-packages/keras/optimizers.py", line 614, in get 
# Instantiate a Keras optimizer 

File "/home/kiran/anaconda/lib/python3.5/site-packages/keras/utils/generic_utils.py", line 16, in get_from_module 
str(identifier)) 

ValueError: Invalid optimizer: rmsprops 

Dann, wenn ich auf optimizers.py klicken ich den Code entwickelt von Keras in meiner Umgebung. Danach habe ich im Code alle "rmsprop" Schlüsselwörter durch "rmsprops" ersetzt und die Datei gespeichert. Also dachte ich, ich brauche die aktualisierte optimizers.py in meinem System. Aber wenn ich zu meiner ursprünglichen Datei zurückgehe und model.compile starte, wird derselbe Fehler ausgegeben.

Jede Hilfe würde wirklich geschätzt werden. Danke im Voraus.

Antwort

0

Sind Sie sicher, dass es sich um einen neuen Optimierer handelt, den Sie möchten? Keine benutzerdefinierte Zielfunktion? Ziele können benutzerdefiniert sein, es ist einfach zu definieren, Optimierer sind kniffliger.

Es gibt bereits eine große Anzahl von Optimierern mit vielen Parametern. Aber wenn Sie wirklich diesen Weg gehen wollen, würde ich Ihnen empfehlen, zu Tensorflow gehen! Dann können Sie verwenden this in Keras

Es ist alles, was ich für Sie tun kann, aber vielleicht gibt es eine andere Möglichkeit, die ich nicht kenne.

1

Ich denke, Ihr Ansatz ist kompliziert und es muss nicht sein. Angenommen, Sie haben Ihren eigenen Optimierer implementieren durch Subklassen keras.optimizers.Optimizer:

class MyOptimizer(Optimizer): 
    optimizer functions here. 

Dann ist es in Ihrem Modell instanziiert Sie dies tun können:

myOpt = MyOptimizer() 
model.compile(loss='binary_crossentropy', optimizer=myOpt, metrics= ['accuracy']) 

nur eine Instanz des Optimierers als Pass Optimizer-Parameter von model.compile und das ist es, Keras wird jetzt Ihren Optimierer verwenden.