【问题标题】:Create custom activation function in keras在 keras 中创建自定义激活函数
【发布时间】:2020-05-29 09:03:27
【问题描述】:

我想用 keras.backend 为 LSTM 的最后一个密集编写一个自定义激活函数,如下所示:

def customactivation(x):
    if x <= 0.5:
        return 0
    else :
        return 1



model.add(Dense(1, activation=customactivation))

我该怎么办?

【问题讨论】:

标签: python keras lstm activation-function


【解决方案1】:

这个函数是不可微分的,除非你知道自己在做什么,否则对训练毫无用处。您将收到错误“An operation has None for gradient”

也就是说:

def customactivation(x):
    return K.cast(K.greater(x, 0.5), K.floatx())

【讨论】:

  • 是的,我使用了这个,但它给了我这个错误:ValueError: An operation has None for gradient。请确保您的所有操作都定义了渐变(即可微分)。无梯度的常用操作:K.argmax、K.round、K.eval。
  • 是的,完全符合预期。
  • 添加后:get_custom_objects().update({'custom_activation': Activation(custom_activation)}) ,它的工作原理! (在link中提到过)
猜你喜欢
  • 2017-10-10
  • 2019-01-16
  • 2018-08-30
  • 2019-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-15
  • 2018-09-30
相关资源
最近更新 更多