我对Keras真的很新,请原谅我,如果我的查询有点傻。我使用默认方法在我的系统中安装了Keras,它工作正常。我想为Keras添加一个新的优化器,以便我可以在model.compile函数下轻松提到“optimizer = mynewone”。如何更改Keras中的“optimizer.py”代码并确保更改反映在我的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在我的环境中开发的代码。之后在代码中我用“rmsprops”替换了所有“rmsprop”关键字并保存了文件。所以我认为我的系统中必须有更新的optimizers.py。但是,当我回到原始文件并运行model.compile时,它会抛出相同的错误。
任何帮助都会非常感激。提前谢谢。
答案 0 :(得分:1)
我认为你的方法很复杂,但并非必须如此。我们假设您通过继承keras.optimizers.Optimizer来实现自己的优化器:
class MyOptimizer(Optimizer):
optimizer functions here.
然后在模型中实例化它,你可以这样做:
myOpt = MyOptimizer()
model.compile(loss='binary_crossentropy', optimizer=myOpt, metrics= ['accuracy'])
只需将优化器的实例作为model.compile的优化器参数传递即可,Keras现在将使用您的优化器。
答案 1 :(得分:0)
您确定它是您想要的新优化器吗?不是自定义目标函数?目标可以定制,易于定义,优化器更加棘手。
已经有大量具有大量参数的优化器。但是,如果你真的想沿着这条路走下去,我会建议你去tensorflow! 然后,您就可以使用this in Keras
我能为你做的一切,但也许还有另一种我不知道的方式。