Могу ли я объединить Conv2D и LeakyReLU в один слой?

#python #tensorflow #keras #neural-network

#python #тензорный поток #keras #нейронная сеть

Вопрос:

Слой keras Conv2D не поставляется с самой функцией активации. В настоящее время я перестраиваю модель YOLOv1 для практики. В модели YOLOv1 есть несколько слоев Conv2D, за которыми следуют активации с использованием функции leaky relu . Есть ли способ объединить

 from keras.layers import Conv2D, LeakyReLU

...

def model(input):
    ...

    X = Conv2D(filters, kernel_size)(X)
    X = LeakyReLU(X)

    ...
  

в одну строку кода, например X = conv_with_leaky_relu(X) ? Я думаю, это должно быть похоже на

 def conv_with_leaky_relu(*args, **kwargs):
    X = Conv2D(*args, **kwargs)(X)
    X = LeakyReLU(X)
    return X
  

но это, конечно, не работает, потому что не определено, что такое X. Есть идеи?

Ответ №1:

Вы можете просто передать это как активацию:

 X = Conv2D(filters, kernel_size, activation=LeakyReLU())(X)
  

Комментарии:

1. Не знал этого, просто посмотрел на список реализованных активаций, и leaky relu, похоже, не входит в этот список. Извините за глупый вопрос и спасибо за ответ 🙂

2. @sampleuser — вы можете передавать вызываемые объекты activation в дополнение к строкам