我试图在Keras的卷积层前向传递期间添加随机噪声。我编写了一个包装器类,它会在计算卷积之前向权重添加噪声。对自我的任何添加或修改。权重对最终值没有影响。也没有错误。有人能帮忙吗?
class Conv2D_New(tf.keras.layers.Conv2D):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def call(self, inputs):
random_noise = tf.random.normal(stddev=0.01, shape=self.weights[0].shape)
self.weights[0] = self.weights[0] + random_noise
tf.print(self.weights[0]) ########### NO CHANGE ???? ##################
return super().call(inputs)
如果您查看文档中的示例,您会注意到它使用了Tensor
方法assign_add
。在您的情况下尝试使用相同的方法:
self.weights[0].assign_add(random_noise)