在去噪自編碼器中,模型的輸入是原始的輸入通過某種形式的加噪過程後的衰弱的形式,因此加噪聲通常分爲:加高斯白噪聲,掩模噪聲,椒鹽噪聲。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取不到