我想添加一层,上一层<0.5
的所有元素均为0
,上一层>=0.5
的所有元素均为1
。
你知道怎么做吗?
答案 0 :(得分:0)
您可以对某些除法操作使用Modified ReLU激活。以下解决方案几乎没有修改,因为对于x == 0.5,它输出0。
输出O(x)可以重写为
现在,自定义层将是
class CustomReLU(Layer):
def __init__(self, **kwargs):
super(CustomReLU, self).__init__(**kwargs)
def build(self, input_shape):
super(CustomReLU, self).build(input_shape)
def call(self, x):
relu = ReLU()
output = relu(x-0.5)/(x-0.5)
return output
def compute_output_shape(self, input_shape):
return input_shape
对于x = 0.5,可以很容易地将上述方程式和代码修改为以下形式。
,
如果x等于0.5,则(x==0.5)
的值为1,否则x等于0。
import keras.backend as K
class CustomReLU(Layer):
def __init__(self, **kwargs):
super(CustomReLU, self).__init__(**kwargs)
def build(self, input_shape):
super(CustomReLU, self).build(input_shape)
def call(self, x):
relu = ReLU()
output = relu(x-0.5)/(x-0.5) + K.cast(K.equal(x, 0.5), K.floatx())
return output
def compute_output_shape(self, input_shape):
return input_shape