去噪自动编码器 - 在自定义间隔增加噪声训练

时间:2017-08-17 00:41:14

标签: tensorflow neural-network deep-learning keras autoencoder

我试图理解去噪自动编码器。我已经按照这个keras教程 - https://blog.keras.io/building-autoencoders-in-keras.html

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

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) 

产生:

enter image description here

这意味着MINST数据集中的噪声和基础数据的值介于0和1之间。

应用训练后的模型后,大部分噪音被正确删除: enter image description here

我试图用很少的人工噪音训练模型,但是在-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)

产生:

enter image description here

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

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

enter image description here

大部分噪音未被删除。为了消除区间(-5,5)中的噪音,我需要执行哪些步骤?在将噪声添加到区间(0,1)之后,我尝试将所有数据标准化,但这不是可行的方法(使用此方法我的结果非常糟糕)。

1 个答案:

答案 0 :(得分:0)

解码后的图像仍有明显的噪点。由于您没有提供用于自动编码器的代码,因此我猜您正在将其安装在噪声数据ae.fit(x=x_noised, y=x_noised)上, 而您应该适合原始数据:

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