Tensorflow(添加噪声的方式)

在去噪自编码器中,模型的输入是原始的输入通过某种形式的加噪过程后的衰弱的形式,因此加噪声通常分为:加高斯白噪声,掩模噪声,椒盐噪声python

1.加性高斯噪声数组

self.scale = tf,placeholder(dtype = tf.float32)dom

self.x_corrupted = tf.add(self.x, self.scale*tf.random_normal(shape = (self.n_input,)))函数

2.掩模噪声编码

self.keep_prob = tf.placeholder(dtype = tf.float32)spa

self.x_corrupted = tf.nn.dropout(self.x, self.keep_prob)orm

3.椒盐噪声对象

def salt_and_pepper_noise(X,v)索引

  X_noise = X.copy()字符串

  n_features = X.shape[1]

  mn = X.min()

  mx = X.max()

  for i,sample in enumerate(X):

    mask = np.random.randint(0,n_features,v)

    for m in mask:

      if np.random.rand() < .5:

        X_noise[i][m] = mn

      else:

        X_noise[i][m] = mx

    return X_noise

讲解:

1. enumerate(X):

此函数是python内带的一个函数,它的功能就是对一个可迭代,可遍历的对象组成一个序列,能够同时获取索引和值,说白了就是将一个个列表,字符串都全都团在一块儿,而后呢,用这个函数能够返回其中的每一个元素,并返回每一个元素所在的位置坐标。

要是咱们呢既想遍历元素,又要遍历索引(元素所在的位置)就能够用for 循环来实现,就像上面的椒盐噪声添加的时候同样,i就是索引(元素的位置),sample就是每一个元素

2..np.random.randint(low,high,size)

这个函数看起来就很简单了,随即产生一些数,这些数是什么呢,就是在定义的最大值和最小值之间来取,那么咱们取多少呢,就看size,若是是1.......n之间的数字就会产生一行n列的元素,如果相似于(1,3),(2,6)等,那么就会造成一个数组矩阵

只有low

np.random.randint(2,size = 5)

array([0,1,1,1,1])

np.random.randint(5,size = (3,4))

array([[1,2,3,4],

   [2,3,4,1],

   [2,1,4,0]])

WARNING:low的值是取不到的,如果有high,则[low,high),也就是high取不到

相关文章
相关标签/搜索