2017-02-19 98 views
5

我對Keras非常新,所以如果我的查詢有點傻,請原諒我。我使用默認方法在我的系統中安裝了Keras,它工作正常。我想爲Keras添加一個新的優化器,以便在model.compile函數下輕鬆提及「optimizer = mynewone」。我如何着手改變Keras中的「optimizer.py」代碼,並確保更改反映在我的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我得到開發的代碼凱拉斯在我的環境中。之後,在代碼中,我用「rmsprops」替換了所有「rmsprop」關鍵字並保存了該文件。所以我想我的系統中必須有更新的optimizers.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現在將使用您的優化器。