Да, слой Conv1D будет использовать функцию активации PReLu. Когда вы определяете слой типа Conv2D
,
x = tf.keras.layers.Conv2D( 13 , kernel_size=( 3 , 3 ) , strides=1 , activation='relu' )( inputs )
Вышеприведенный оператор эквивалентен
x = tf.keras.layers.Conv2D( 13 , kernel_size=( 3 , 3 ) , strides=1 )( inputs )
x = tf.keras.layers.Activation( 'relu' )( x )
Причина предоставления функций активации в виде отдельных слоев заключается в том, что иногда нам нужно добавить нашу логику c к картам объектов перед передачей карт объектов в функцию активации.
Например, слой BatchNormalization
добавляется перед передачей карт объектов к функции активации
x = tf.keras.layers.Conv2D( 13 , kernel_size=( 3 , 3 ) , strides=1 )( inputs )
x = tf.keras.layers.BatchNormalization()(x)
x = tf.keras.layers.Activation( 'relu' )( x )
Возвращаясь к вашему вопросу,
Добавлены некоторые специальные функции активации, такие как elu
, LeakyReLU
и PReLU
как отдельные слои, и мы не можем включить их в слои Conv1D
, используя аргумент activation=
.
Что касается обучаемых параметров, слой conv1d_18
имеет 15050 параметров, которые образуют ядро в одномерной свертке. Эти параметры не имеют ничего общего с функцией активации.
4900 параметров PReLU
- это параметры наклона, которые оптимизированы с обратным распространением. Эти параметры, наряду с весами ядра, будут обновляться с каждым пакетом и, следовательно, включены в обучаемые параметры.
Таким образом, выходы (неактивированные) слоя Conv1D
будут проходить через PReLU
Активация, которая действительно использует параметр наклона для расчета активированных выходов.