我有一个自动编码器,我需要添加一个高斯噪声层后,我的输出。我需要一个自定义层来做这件事,但我真的不知道如何产生它,我需要产生它使用张量。
如果我想在下面代码的call部分实现上面的等式,我应该怎么做?在
class SaltAndPepper(Layer):
def __init__(self, ratio, **kwargs):
super(SaltAndPepper, self).__init__(**kwargs)
self.supports_masking = True
self.ratio = ratio
# the definition of the call method of custom layer
def call(self, inputs, training=None):
def noised():
shp = K.shape(inputs)[1:]
**what should I put here????**
return out
return K.in_train_phase(noised(), inputs, training=training)
def get_config(self):
config = {'ratio': self.ratio}
base_config = super(SaltAndPepper, self).get_config()
return dict(list(base_config.items()) + list(config.items()))
我也尝试使用lambda层实现,但它不起作用。在
作为错误:
AttributeError: 'float' object has no attribute 'dtype'
,只需将K.sqrt
更改为math.sqrt
,就可以了。在如果您正在寻找加法或乘法高斯噪声,那么它们已经在Keras中实现为一个层:^{} (加法)和{a2}(乘法)。在
但是,如果您特别想要寻找图像处理中的Gaussian blur过滤器中的模糊效果,然后,您可以简单地使用一个深度卷积层(在每个输入通道上独立地应用滤波器)和固定的权重来获得所需的输出(请注意,您需要生成高斯核的权重,将其设置为DepthwiseConv2D层的权重。为此,您可以使用answer中介绍的函数:
相关问题 更多 >
编程相关推荐