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关闭提议的更改是错误的......有什么想法吗?谢谢!
您可以使用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)