我正在尝试在Keras中创建一个激活函数,该函数可以采用如下所示的参数beta:
from keras import backend as K
from keras.utils.generic_utils import get_custom_objects
from keras.layers import Activation
class Swish(Activation):
def __init__(self, activation, beta, **kwargs):
super(Swish, self).__init__(activation, **kwargs)
self.__name__ = 'swish'
self.beta = beta
def swish(x):
return (K.sigmoid(beta*x) * x)
get_custom_objects().update({'swish': Swish(swish, beta=1.)})
Run Code Online (Sandbox Code Playgroud)
它在没有beta参数的情况下可以正常运行,但是如何在激活定义中包含参数?我也model.to_json()喜欢在激活ELU 时保存该值。
更新:我根据@today的答案编写了以下代码:
from keras.layers import Layer
from keras import backend as K
class Swish(Layer):
def __init__(self, beta, **kwargs):
super(Swish, self).__init__(**kwargs)
self.beta = K.cast_to_floatx(beta)
self.__name__ = 'swish'
def call(self, inputs):
return K.sigmoid(self.beta * …Run Code Online (Sandbox Code Playgroud) python machine-learning keras activation-function keras-layer