2017-02-19 105 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现在将使用您的优化器。