在Keras中进行非线性激活之前获取输出

时间:2018-12-23 14:37:07

标签: keras neural-network conv-neural-network convolution activation-function

使用以下语法在Keras中定义图层时,如何在激活之前获取值:

model.add(Convolution2D(128, 5, 5, activation='relu'))

我知道我可以简单地使用:

model.add(Convolution2D(128, 5, 5))
model.add(Activation('relu'))

并从第一层获取输出,但是使用第一种语法时可以吗?

1 个答案:

答案 0 :(得分:1)

不,您无法以简单的方式执行此操作,因为激活功能is applied right after在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

尽管如此,您也许可以编写自定义代码来执行卷积,并定义一个自定义函数以获取卷积的原始输出。另一种选择是编写自己的卷积层(不用担心,这很容易做到!),它具有两个输出:应用卷积的结果以及应用激活函数的结果。