使用以下语法在Keras中定义图层时,如何在激活之前获取值:
model.add(Convolution2D(128, 5, 5, activation='relu'))
我知道我可以简单地使用:
model.add(Convolution2D(128, 5, 5))
model.add(Activation('relu'))
并从第一层获取输出,但是使用第一种语法时可以吗?
答案 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
尽管如此,您也许可以编写自定义代码来执行卷积,并定义一个自定义函数以获取卷积的原始输出。另一种选择是编写自己的卷积层(不用担心,这很容易做到!),它具有两个输出:应用卷积的结果以及应用激活函数的结果。