Может ли объект LeakyReLU вызываться? - PullRequest
0 голосов
/ 09 июля 2019

Я пытался выяснить принцип CNN, читая некоторый код. И я увидел следующее.

from keras.layers.convolutional import Convolution2D
from keras.layers import Input
from keras.layers.normalization import BatchNormalization
from keras.layers.advanced_activations import LeakyReLU

def Convolution(f, k=3, s=2, border_mode='same', **kwargs):

    return Convolution2D(f, k, k, border_mode=border_mode,
                         subsample=(s, s),
                         **kwargs)


def BatchNorm(mode=2, axis=1, **kwargs):

    return BatchNormalization(mode=2,axis=axis, **kwargs)

i = Input(shape=(1, 512, 512))
conv1 = Convolution(64)(i)
conv1 = BatchNorm()(conv1)
x = LeakyReLU(0.2)(conv1)

Однако я не понимаю последнюю строку. Поскольку LeakyReLU является классом, мы можем получить объект после кода

LeakyReLU(0.2)

выполняется. Итак, что на самом деле означает (conv1) после объекта LeakyReLU. Может ли объект LeakyReLU вызываться ??

1 Ответ

1 голос
/ 09 июля 2019

В Python можно сделать объект, который можно вызвать как функцию, используя специальный метод __call__, который делает объект вызываемым. Keras реализует это здесь .


В сторону: использование примеров Keras - очень плохой способ понять, как работают CNN. Я бы рекомендовал использовать MOOC или, что более уместно, текст Deep Learning with Python , написанный автором Keras, в качестве введения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...