在Keras测试中如何激活高斯噪声层?

b1uwtaje  于 2023-01-21  发布在  其他
关注(0)|答案(1)|浏览(132)

我在Keras的网络中使用高斯噪声层,但我认为它只在训练期间工作,在测试阶段处于非活动状态。在测试期间是否有任何方法可以激活它?如果我想在训练期间显示此层的输出,我应该怎么做?我还有一个关于Keras中cropping2D的问题。如果我需要随机裁剪,在不同位置裁剪层的输出,我该怎么办?因为Cropping2D通常会裁剪图像的中心。谢谢。

image = Input((28, 28, 1))
conv1 = Conv2D(64, (5, 5),padding='same', name='convl1e',dilation_rate=(2,2))(image)
bncv1=BatchNormalization()(conv1)
act1=Activation('relu')(bncv1)
decoded_noise = GaussianNoise(0.5)(act1)
#decoded_noise=Cropping2D(cropping=(6,6))(act1)#16
pred_w = Conv2D(1, (1, 1),padding='same', name='reconstructed_W',dilation_rate=(2,2))(decoded_noise)
bncv18=BatchNormalization()(pred_w)
act18=Activation('sigmoid', name='wprim')(bncv18)  
img_extraction=Model(inputs=image,outputs=act18)
tvokkenx

tvokkenx1#

你可以创建一个新的基于高斯噪声的类,只需要做一些小的修改。你只需要稍微调整调用函数。

class AlwaysActiveGaussianNoise(GaussianNoise):

    def call(self, inputs, training=None):
        def noised():
            return inputs + self._random_generator.random_normal(
                shape=tf.shape(inputs),
                mean=0.0,
                stddev=self.stddev,
                dtype=inputs.dtype,
            )

         return noised()

相关问题