在去噪自编码器中,模型的输入是原始的输入通过某种形式的加噪过程后的衰弱的形式,因此加噪声通常分为:加高斯白噪声,掩模噪声,椒盐噪声。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取不到