Tensorflow(添加噪聲的方式)


在去噪自編碼器中,模型的輸入是原始的輸入經過某種形式的加噪過程后的衰弱的形式,所以加噪聲一般分為:加高斯白噪聲,掩模噪聲,椒鹽噪聲

1.加性高斯噪聲

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

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)

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM