2017-02-19 3 views
5

Я действительно новичок в Keras, так что простите меня, если мой запрос немного глуп. Я установил Keras в свою систему, используя методы по умолчанию, и он отлично работает. Я хочу добавить новый оптимизатор в Keras, чтобы я мог легко указать «optimizer = mynewone» в функции model.compile. Как мне изменить код «optimizer.py» в Keras и убедиться, что это изменение отражено в моей среде Keras. Вот то, что я пробовал:Как изменить код оптимизации Keras

Предположим, что я могу изменить название оптимизатора от rmsprop к rmsprops в коде, я получаю следующее сообщение об ошибке:

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 

Затем, когда я нажимаю на optimizers.py я получить код, разработанный Keras в моей среде. После этого в коде я заменил все ключевые слова «rmsprop» на «rmsprops» и сохранил файл. Поэтому я думал, что должен обновить optimizer.py в своей системе. Но когда я возвращаюсь к исходному файлу и запускаю файл model.compile, он выдает ту же ошибку.

Любая помощь была бы действительно оценена. Заранее спасибо.

ответ

0

Вы уверены, что это новый оптимизатор, который вам нужен? Не пользовательская целевая функция? Цели могут быть обычными, их легко определить, оптимизаторы сложнее.

Существует уже огромное количество оптимизаторов с множеством параметров. Однако, если вы действительно хотите спуститься по этой дороге, я бы посоветовал вам пойти в тензор! Тогда вы сможете использовать this in Keras

Это все, что я могу для вас сделать, но, возможно, есть другой способ, о котором я не знаю.

1

Я думаю, что ваш подход сложный, и это не обязательно. Допустим, вы реализуете свой собственный оптимизатор по подклассов keras.optimizers.Optimizer:

class MyOptimizer(Optimizer): 
    optimizer functions here. 

Затем его экземпляр в вашей модели вы можете сделать это:

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

Просто передать экземпляр вашего оптимизатора, что и Оптимизатор параметра model.compile и все, теперь Keras использует ваш оптимизатор.

Смежные вопросы