Keras如何在Relu激活功能中使用max_value

kra*_*rat 7 keras tensorflow activation-function

keras/activation.py中定义的Relu函数是:

    def relu(x, alpha=0., max_value=None):
      return K.relu(x, alpha=alpha, max_value=max_value)
Run Code Online (Sandbox Code Playgroud)

它有一个max_value,可用于剪切值.现在如何在代码中使用/调用它?我尝试了以下方法:(a)

    model.add(Dense(512,input_dim=1))
    model.add(Activation('relu',max_value=250))
    assert kwarg in allowed_kwargs, 'Keyword argument not understood: 
    ' + kwarg
    AssertionError: Keyword argument not understood: max_value
Run Code Online (Sandbox Code Playgroud)

(b)中

    Rel = Activation('relu',max_value=250)
Run Code Online (Sandbox Code Playgroud)

同样的错误

(C)

    from keras.layers import activations
    uu = activations.relu(??,max_value=250)
Run Code Online (Sandbox Code Playgroud)

这个问题是它希望输入存在于第一个值中.错误是'relu()需要至少1个参数(给定1个)'

那我怎么做这个图层呢?

    model.add(activations.relu(max_value=250))
Run Code Online (Sandbox Code Playgroud)

有同样的问题'relu()需要至少1个参数(给定1个)'

如果此文件不能用作图层,则似乎无法为Relu指定剪辑值.这意味着这里的评论https://github.com/fchollet/keras/issues/2119关闭提议的更改是错误的......有什么想法吗?谢谢!

Mar*_*ach 9

您可以使用Keras后端的ReLU功能.因此,首先导入后端:

from keras import backend as K
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用后端功能将您自己的功能作为激活传递.这看起来像

def relu_advanced(x):
    return K.relu(x, max_value=250)
Run Code Online (Sandbox Code Playgroud)

那你可以像使用它一样

model.add(Dense(512, input_dim=1, activation=relu_advanced))
Run Code Online (Sandbox Code Playgroud)

要么

model.add(Activation(relu_advanced))
Run Code Online (Sandbox Code Playgroud)

不幸的是,你必须硬编码其他参数.因此,最好使用一个函数,它返回您的函数并传递您的自定义值:

def create_relu_advanced(max_value=1.):        
    def relu_advanced(x):
        return K.relu(x, max_value=K.cast_to_floatx(max_value))
    return relu_advanced
Run Code Online (Sandbox Code Playgroud)

然后你可以通过任何一个传递你的参数

model.add(Dense(512, input_dim=1, activation=create_relu_advanced(max_value=250)))
Run Code Online (Sandbox Code Playgroud)

要么

model.add(Activation(create_relu_advanced(max_value=250)))
Run Code Online (Sandbox Code Playgroud)

  • 你如何加载模型?...我似乎收到错误消息`值错误:未知激活函数:relu_advanced` (2认同)