Как добавить пользовательский слой в керасе - PullRequest
0 голосов
/ 20 марта 2019

Я хочу добавить слой, все элементы предыдущего слоя <0.5 равны 0, а все элементы предыдущего слоя >=0.5 равны 1.
Вы знаете, как это сделать?

1 Ответ

0 голосов
/ 20 марта 2019

Вы можете использовать модифицированную активацию ReLU с некоторыми операциями деления. Следующее решение немного изменено, потому что оно выдает 0 для x == 0.5.

Выход 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

Edit:

Для x = 0,5 приведенное выше уравнение и код могут быть легко изменены следующим образом. equ1
где (x==0.5) оценивается в 1, если x равен 0,5 и 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...