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取不到

相關文章
相關標籤/搜索