Machine learning 如何在推断时为Keras的激活添加噪声?

Machine learning 如何在推断时为Keras的激活添加噪声?,machine-learning,keras,deep-learning,noise,activation-function,Machine Learning,Keras,Deep Learning,Noise,Activation Function,Keras中的高斯噪声似乎只是在训练期间增加噪声。我需要在测试时为激活添加噪音。我的架构是在imagenet上进行resnet50预训练,所有层都冻结,除了高斯噪声需要添加到FC层之前的最后一个激活层 这是怎么做到的!?我在末尾添加的高斯噪声层没有任何效果,因为文档中说它只在训练期间使用。在测试期间,该层的替代方案是什么 ________________________________________________________________________________________

Keras中的高斯噪声似乎只是在训练期间增加噪声。我需要在测试时为激活添加噪音。我的架构是在imagenet上进行resnet50预训练,所有层都冻结,除了高斯噪声需要添加到FC层之前的最后一个激活层

这是怎么做到的!?我在末尾添加的高斯噪声层没有任何效果,因为文档中说它只在训练期间使用。在测试期间,该层的替代方案是什么

__________________________________________________________________________________________________
bn5c_branch2c (BatchNormalizati (None, 7, 7, 2048)   8192        res5c_branch2c[0][0]             
__________________________________________________________________________________________________
add_80 (Add)                    (None, 7, 7, 2048)   0           bn5c_branch2c[0][0]              
                                                                 activation_242[0][0]             
__________________________________________________________________________________________________
activation_245 (Activation)     (None, 7, 7, 2048)   0           add_80[0][0]                     
__________________________________________________________________________________________________
gaussian_noise_1519 (GaussianNo (None, 7, 7, 2048)   0           activation_245[0][0]             
__________________________________________________________________________________________________
avg_pool (GlobalAveragePooling2 (None, 2048)         0           gaussian_noise_1519[0][0]        
__________________________________________________________________________________________________
fc1000 (Dense)                  (None, 1000)         2049000     avg_pool[19][0]                  
==================================================================================================
Total params: 25,636,712
Trainable params: 0
Non-trainable params: 25,636,712

通过在张量上调用时传递
training=True
参数,可以使那些在测试阶段具有不同行为的层保持活动状态(例如
退出
):

out = SomeLayer(**configs)(inp, training=True)

有了它,
SomeLayer
将在培训和测试阶段都很活跃。

我想知道你这样做的目的是什么?我正在进行一些特定的稳健性测试,并实施一些研究想法。你能用它做以下工作吗?1.为培训2定义一个模型(带/不带噪波)。定义一个推理模型,该模型使用添加噪波3的
Lambda
层。将训练过的权重从训练过的模型复制到推理模型我是keras的新手。你能在回答中提供详细的代码吗?我正在寻找类似的代码。有解决方案吗?没有,因为它只在训练时有效,在测试时无效@灵车这是正常情况(即未通过
培训
论证)。请仔细阅读答案。还有文档:文档中没有任何地方说,如果使用
training=True
,guassian噪声层将处于非活动状态。@hearse和讽刺的是,你说“我是Keras的新手”,然后对它发表如此自信的声明。我能不必训练整个imagenet吗?只需要在一个特定层之后的推断时间添加简单的加性高斯噪声。重新培训整个imagenet似乎是一条漫长的道路