Получение вывода до нелинейной активации в Керасе
Как я могу получить значение до активации, когда я использую следующий синтаксис для определения слоя в Keras:
model.add(Convolution2D(128, 5, 5, activation='relu'))
Я знаю, что я могу просто использовать:
model.add(Convolution2D(128, 5, 5))
model.add(Activation('relu'))
и получить вывод из первого слоя, но возможно ли это при использовании первого синтаксиса?
1 ответ
Нет, вы не можете сделать это простым способом, так как функция активации применяется сразу после получения результата свертки при реализации слоя свертки в Keras:
if self.rank == 2:
outputs = K.conv2d(
inputs,
self.kernel,
strides=self.strides,
padding=self.padding,
data_format=self.data_format,
dilation_rate=self.dilation_rate)
if self.activation is not None:
return self.activation(outputs)
return outputs
Тем не менее, вы можете написать собственный код для выполнения свертки и определить пользовательскую функцию для получения необработанных результатов свертки. Другой вариант - написать свой собственный слой свертки (не волнуйтесь, это так легко сделать!), Который имеет два выхода: результат применения свертки, а также результат применения функции активации.