首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为Keras定义一个新的优化函数

如何为Keras定义一个新的优化函数
EN

Stack Overflow用户
提问于 2019-10-14 00:35:48
回答 2查看 78关注 0票数 0

我想为Keras实现一个新的优化函数,它不是基于参数的偏导数,而是基于这些偏导数的导数。我该如何继续呢?

EN

回答 2

Stack Overflow用户

发布于 2019-10-14 02:01:44

首先,您可以通过查看code for the current optimizers来创建自定义优化器。

您可以看到,可以通过将keras.optimizers.Optimizer子类化来定义优化器

代码语言:javascript
复制
from keras.optimizers import Optimizer

class CustomOptimizer(Optimizer):

    def __init__(self, custom, parameters, **kwargs):
        self.custom = custom
        self.parameters = parameters
        # ...
        super().__init__(kwargs)

    def get_updates(self, loss, params):
        # calculate the updates for the parameters
        grads = self.get_gradients(loss, params)  # as implemented in `Optimizer`
        # ...
        self.updates = # your updates
        return self.updates

    def get_config(self):
        return {'custom': custom, 'parameters': parameters}

在这里,我相信你可以用与get_gradients()实现相同的方式在get_updates()中计算梯度的导数(看看Keras的代码)。

票数 0
EN

Stack Overflow用户

发布于 2019-10-20 05:13:01

事实上,在看了2-3次优化器的Keras代码后,我不仅很快放弃了理解所有东西的尝试,而且对我来说,get_updates函数似乎只是返回已经计算出的梯度,其中我寻求直接访问参数的偏导函数,以便使用这些导数的导数。所以梯度是没用的..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58365610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档