如何在 python 中向 Mnist 数据集添加 50% 的随机正常噪声

Posted

技术标签:

【中文标题】如何在 python 中向 Mnist 数据集添加 50% 的随机正常噪声【英文标题】:how to add 50% random normal noise to Mnist dataset in python 【发布时间】:2019-07-01 11:41:32 【问题描述】:

我正在尝试根据一篇按百分比添加噪声的文章来使 MNIST 数据集变得嘈杂。我不知道如何计算添加到图像中的噪声百分比。

这是我的 Python 代码:

from keras.datasets import mnist
import numpy as np

(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
X_train /= 255
X_test /= 255
noise_factor = 0.5
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) 
x_train_noisy = np.clip(x_train_noisy, 0., 1.)
x_test_noisy = np.clip(x_test_noisy, 0., 1.)

1.这个噪音的百分比是50%吗(基于noise_factor)?噪声因子可以告诉我们百分比吗?

2.还有其他方法可以用百分比添加噪音吗?

3.确定性分布和非随机性是一回事吗?我看到一篇文章,他们根据确定性分布添加了百分比噪声,但寻找它却一无所获。

【问题讨论】:

通常,噪声不会以百分比形式添加。相反,您可以指定正态分布的方差以选择噪声量。对于初学者,您可以尝试使用 0.1 的值。 这个其实我知道。但是我必须按百分比添加。因为我在模拟一篇文章,他们使用百分比,我们的结果应该和那篇文章一样。 请查看我的回答,如果您还有其他问题,请在下方评论 能给我一个链接吗? 我对您的问题的回答,就在这个页面本身。如果您没有看到它,请刷新您的页面 【参考方案1】:

    噪声不是以百分比表示的。通常,您从标准正态分布中提取噪声并将其乘以一个因子(在您的情况下,它是 0.5)

    在处理百分比时,您需要指定相对于 what 的百分比。如果你有,那么你可以从那里随机抽取(但我在实践中没有看到它)。

    提供更多信息,但如果某些东西是确定性的,则意味着它不是随机的。通过指定种子值可以使随机模型具有确定性,但这通常是为了在实验之间产生完全相同的随机值。

【讨论】:

我被否决了。如果有任何原因,请说明以便改进此答案 那么人们通常如何指定它?你能说出一些吗? 它们来自正态分布。通过选择分布的方差来改变数量(或者他们只是从标准正态分布中提取并乘以一个因子) 顺便说一句,这就是我正在谈论的那篇文章。他们使用百分比,但没有提及如何计算它。ieeexplore.ieee.org/document/8079976 我会说它只是高斯的强度。所以你可以将标准法线乘以 0.5(就像你一样)

以上是关于如何在 python 中向 Mnist 数据集添加 50% 的随机正常噪声的主要内容,如果未能解决你的问题,请参考以下文章

如何像 MNIST 数据集一样创建图像数据集?

Python读取MNIST数据集

Python Django:在视图中向对象添加属性还是制作数据字典更好?

mnist的格式说明,以及在python3.x和python 2.x读取mnist数据集的不同

在 Spark Scala 中向数据集添加过滤条件

求助Tensorflow下跑mnist手写体数据集遇到Cuda compute capability问题