Tensorflow 去噪自动编码器-在自定义间隔上使用附加噪声进行训练

Tensorflow 去噪自动编码器-在自定义间隔上使用附加噪声进行训练,tensorflow,neural-network,deep-learning,keras,autoencoder,Tensorflow,Neural Network,Deep Learning,Keras,Autoencoder,我想了解去噪自动编码器。我遵循了keras教程- 在本教程中,通过以下方式添加人工噪波来创建训练数据: x_train_noisy = x_train + noise_factor * np.random.normal(loc=0.0, scale=1.0, size=x_train.shape) x_test_noisy = x_test + noise_factor * np.random.normal(loc=0.0, scale=1.0, size=x_test.shape) 产生

我想了解去噪自动编码器。我遵循了keras教程-

在本教程中,通过以下方式添加人工噪波来创建训练数据:

x_train_noisy = x_train + noise_factor * np.random.normal(loc=0.0, scale=1.0, size=x_train.shape) 
x_test_noisy = x_test + noise_factor * np.random.normal(loc=0.0, scale=1.0, size=x_test.shape) 
产生:

这意味着噪波以及来自MINST数据集的基础数据的值介于0和1之间

应用经过训练的模型后,大部分噪声都已正确消除:


我试图在人工噪声非常小的情况下训练模型,但间隔为-5到5,如下所示:

def noise_matrix(arr, num, min, max):
    m = np.product(arr.shape)
    arr.ravel()[np.random.randint(0, m, size=num)] = np.random.uniform(min, max, num)
    return arr

x_train_noisy = noise_matrix(x_train, x_train.shape[0] * 2, -5, 5)
x_test_noisy = noise_matrix(x_test, x_test.shape[0] * 2, -5, 5)
产生:

(上图中对比度的差异是由
matplotlib
库中的隐式标准化引起的)

现在,当我训练自动编码器并应用模型时,我得到以下结果:


大部分噪音没有消除。要从间隔
(-5,5)
中去除噪声,我需要执行哪些步骤?在向间隔
(0,1)
添加噪声后,我尝试对所有数据进行规范化,但这不是方法(我用这种方法得到了非常糟糕的结果)。

解码图像仍然有明显的噪声。由于您没有提供用于安装自动编码器的代码,我猜您正在将其安装到有噪数据
ae.fit(x=x_有噪,y=x_有噪)
, 鉴于您应该在原始数据上进行拟合:

ae.fit(x=x_noised, y=x_original)

解码后的图像仍然有明显的噪声。由于您没有提供用于安装自动编码器的代码,我猜您正在将其安装到有噪数据
ae.fit(x=x_有噪,y=x_有噪)
, 鉴于您应该在原始数据上进行拟合:

ae.fit(x=x_noised, y=x_original)