【问题标题】:How to change Keras optimizer code如何更改 Keras 优化器代码
【发布时间】:2017-02-19 05:55:40
【问题描述】:

我对 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 时,它​​会抛出同样的错误。

任何帮助将不胜感激。提前致谢。

【问题讨论】:

    标签: python github neural-network deep-learning 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 现在将使用您的优化器。

    【讨论】:

    • 嗨!我目前正在尝试在我的代码中实现这一点,但我在代码中定义它时遇到了一些困难。我有rprop.py 和一个我想在其中引用它的 Keras 脚本——所以我输入了class MyOptimizer(Optimizer):,但是optimizer functions here 中有哪些函数可以在我的模型中引用它?谢谢
    • 我将rprop.py 放入我的代码库,但实例化/引用不起作用,我不确定为什么:(
    【解决方案2】:

    您确定它是您想要的新优化器吗?不是自定义目标函数?目标可以自定义,很容易定义,优化器比较棘手。

    已经有大量带有大量参数的优化器。但是,如果您真的想走那条路,我建议您使用 tensorflow! 然后你就可以使用this in Keras

    这是我能为你做的一切,但也许还有另一种我不知道的方法。

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 1970-01-01
      • 2022-11-23
      • 2020-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      相关资源
      最近更新 更多