在Keras中非线性激活之前获得输出

在Keras中非线性激活之前获得输出,keras,neural-network,conv-neural-network,convolution,activation-function,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')) 并从第一层获取输出,但使用第一种语法时是否可能?不,您不能以简单的方式进行此操作,因为激活函数在Keras中的卷积层实现中获取卷积输出: model.add(Con

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

model.add(Convolution2D(128, 5, 5, activation='relu'))
我知道我可以简单地使用:

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

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

不,您不能以简单的方式进行此操作,因为激活函数在Keras中的卷积层实现中获取卷积输出:

model.add(Convolution2D(128, 5, 5, activation='relu'))
如果self.rank==2:
输出=K.2d(
投入,
self.kernel,
步幅,
padding=self.padding,
data\u format=self.data\u format,
扩张率=自身扩张率)
如果self.activation不是None:
返回自激活(输出)
返回输出
不过,您可能可以编写一个自定义代码来执行卷积,并定义一个自定义函数来获取卷积的原始输出。另一个选择是编写自己的卷积层(别担心,这么做很容易!),它有两个输出:应用卷积的结果和应用激活函数的结果