我想在最大池化层的输出中添加一些错误百分比



我想在CNN中的最大池化层的输出中添加一些错误百分比(相对误差(。我正在使用keras的最大池化层。以下是代码

i = Input(shape=x_train[0].shape)
x = Conv2D(32, (3, 3), activation='relu', padding='same')(i)
x = BatchNormalization()(x)
x = Conv2D(32, (3, 3), activation='relu', padding='same')(x)
x = BatchNormalization()(x)
x = MaxPooling2D((2, 2))(x)

如何在该层的输出中添加一些错误?我想添加一些原始输出的分数。例如,如果x是我的原始输出,我希望我的输出是x+(x(的某个分数。

提前谢谢。

如果只想添加输入的一小部分,可以使用Add:

x = K.layers.Add()([x, 1/4 * x])

例如:

input = K.layers.Input(shape=(5,))
x = K.layers.Add()([input, 1/4 * input])
model = K.Model(inputs=[input], outputs=[x])
model(np.ones((1,5)))
#<tf.Tensor: shape=(1, 5), dtype=float32, numpy=array([[1.25, 1.25, 1.25, 1.25, 1.25]], dtype=float32)>

然而,这不是噪声,并且在这一层之后的仿射变换将像你所做的那样消失,事实上:

A(x+ 1/4x)+b
= A(5/4x)+b
= 5/4 * A(x)+b

所以您没有添加任何";附加表现力";到您的网络

如果你弄清楚你想要什么噪音(相当于输入的一小部分(,我会修复我的答案

最新更新