2017-02-19 21 views
5

Jestem naprawdę nowy dla Keras, więc wybacz mi, jeśli moje zapytanie jest trochę głupie. Zainstalowałem Keras w moim systemie przy użyciu domyślnych metod i działa dobrze. Chcę dodać nowy optymalizator do Keras, tak żebym mógł łatwo wymienić "optimizer = mynewone" pod funkcją model.compile. Jak mogę zmienić kod "optimizer.py" w Keras i upewnić się, że zmiana zostanie odzwierciedlona w środowisku Keras. Oto, co starałem:Jak zmienić kod optymalizatora Keras

Załóżmy, że zmiana nazwy optymalizujący od rmsprop do rmsprops w kodzie pojawia się następujący błąd:

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 

Następnie po kliknięciu na optimizers.py dostaję kodu opracowanego przez Keras w moim środowisku. Potem w kodzie zastąpiłem wszystkie słowa kluczowe "rmsprop" słowem "rmsprops" i zapisałem plik. Więc pomyślałem, że muszę mieć zaktualizowany optimizers.py w moim systemie. Ale kiedy wrócę do mojego oryginalnego pliku i uruchomię model.compile, wyrzuci ten sam błąd.

Każda pomoc będzie naprawdę doceniana. Z góry dziękuję.

Odpowiedz

0

Czy jesteś pewien, że jest to nowy optymalizator, którego potrzebujesz? Nie jest to funkcja celu niestandardowego? Cele mogą być niestandardowe, łatwe do zdefiniowania, optymalizatory są trudniejsze.

Istnieje już duża liczba optymalizatorów z wieloma parametrami. Jeśli jednak naprawdę chcesz jechać tą drogą, radzę udać się do tensorflow! Wtedy będziesz w stanie wykorzystać this in Keras

To wszystko, co mogę dla ciebie zrobić, ale być może istnieje inny sposób, że nie wiem.

1

Myślę, że twoje podejście jest skomplikowane i nie musi tak być. Powiedzmy, że zaimplementować własną optymalizator przez instacji keras.optimizers.Optimizer:

class MyOptimizer(Optimizer): 
    optimizer functions here. 

Następnie instancję go w modelu można to zrobić:

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

Wystarczy przejść instancję swojej optymalizator jako Optymalizator parametru model.compile i to wszystko, Keras użyje teraz twojego optymalizatora.

Powiązane problemy