如何将拉普拉斯噪声加到keras中的张量中?

2024-04-25 05:13:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在尝试教一个神经网络去解码一个被加入拉普拉斯噪声的输入(即加入一个遵循拉普拉斯分布的中心随机变量)。为了做到这一点,我希望在每个训练历元中添加来自输入拉普拉斯噪声的每一位。这种噪声应该在每一个训练时间点重新产生。你知道吗

现在,我已经实现了一个添加噪声的层。因为keras中包含了一个高斯发生器,所以它对高斯噪声工作起来很容易。对于拉普拉斯的噪音,我尝试过: -使用随机拉普拉斯numpy函数并将其转换为张量。这大大减慢了训练的速度,而且训练的行为很奇怪,所以我不确定它是否做了我认为应该做的事情。 -使用从均匀变量到拉普拉斯变量的转换函数,但这似乎是数值问题(它可能会计算接近0值的对数)。你知道吗

def laplace(x,sigma,batchsize):
    u=K.random_uniform((batchsize,n), minval=-0.5, maxval=0.5)
    return x - sigma*K.sign(u)*K.log(1-2*K.abs(u))

或者

def laplace(x,sigma,batchsize):
    u=K.random_uniform((batchsize,n), minval=-0.5, maxval=0.5)
    return x+K.tf.convert_to_tensor(np.random.laplace(0,sigma,(batchsize,n)),dtype=K.tf.float32)

我想知道,是否有更好的方法来添加拉普拉斯噪声张量再生在每个时代更容易在凯拉斯/张量流。你知道吗

谢谢你的建议!你知道吗


Tags: 函数returntfdef神经网络randomuniform解码