如何在Keras中添加自定义图层

时间:2019-03-20 04:11:32

标签: tensorflow keras layer

我想添加一层,上一层<0.5的所有元素均为0,上一层>=0.5的所有元素均为1
你知道怎么做吗?

1 个答案:

答案 0 :(得分:0)

您可以对某些除法操作使用Modified ReLU激活。以下解决方案几乎没有修改,因为对于x == 0.5,它输出0。

输出O(x)可以重写为

equ1

现在,自定义层将是



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,可以很容易地将上述方程式和代码修改为以下形式。 equ1
如果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