在去噪自编码器中,模型的输入是原始的输入经过某种形式的加噪过程后的衰弱的形式,所以加噪声一般分为:加高斯白噪声,掩模噪声,椒盐噪声。

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

Tensorflow(添加噪声的方式)的更多相关文章

  1. 详解Tensorflow数据读取有三种方式(next_batch)

    转自:https://blog.csdn.net/lujiandong1/article/details/53376802 Tensorflow数据读取有三种方式: Preloaded data: 预 ...

  2. 关于无法把程序(Adobe Fireworks CS5)添加到打开方式的解决办法

    关于无法把程序(Adobe Fireworks CS5)添加到打开方式的解决办法 最近换了新版的Adobe Fireworks CS5,发现打开图片文件时在右键“打开方式”里仍然是以前的Firewor ...

  3. PHP---TP框架---添加数据-----有三种方式

    添加数据 添加数据有三种方式: 第一种: <?php namespace Home\Controller;//这个文件的命名空间 use Think\Controller;//use使用哪一个而 ...

  4. Linux添加快捷启动方式 (Ubuntu Debian CentOS)

    ubuntu桌面快捷方式的创建 debian添加快捷启动方式 centos 6 桌面建立应用程序的快捷方式的方法   今天用着用着ubuntu,突然抽搐了,感觉特别别扭,特别不方便.新装的应用程序不好 ...

  5. Android两种为ViewPager+Fragment添加Tab的方式

    在Android开发中ViewPager的使用是非常广泛的,而它不仅仅能够实现简单的开始引导页,还可以结合Fragment并添加Tab作为选项卡或为显示大批量页面实现强大的顺畅滑动 下面介绍两种为Vi ...

  6. Unity3D的按钮添加事件有三种方式

    为Unity3D的按钮添加事件有三种方式,假设我们场景中有一个Canvas对象,Canvas对象中有一个Button对象. 方式一: 创建脚本ClickObject.cs,然后将脚本添加到Canvas ...

  7. 如何用INNO安装添加快捷启动方式到Win7的快速启动栏(超级任务栏)

    问题:如何用INNO安装添加快捷启动方式到Win7的快速启动栏(超级任务栏) 在XP下,添加方式是直接把快捷方式复制到%appdata%\Microsoft\Internet Explorer\Qui ...

  8. ubuntu 14.04 Clion2016.2 安装激活与安装后添加快捷启动方式

    参考链接:http://www.cnblogs.com/conw/p/5938113.html 下载clion for linux : http://www.jetbrains.com/clion/d ...

  9. matplotlib 添加注释的方式

    matplotlib 添加注释的方式 matplotlib.pyplot.annotate Annotate the point xy with text s s : str The text of ...

随机推荐

  1. Java基础总结1

    数据类型: byte    1字节 short   2字节 int        4字节 long     8字节 float     4字节 double   8字节 char       2字节 ...

  2. MySQL复制表-SELECT INTO FROM

    基础Table: mysql> select * from staff; +----+----------+-------+ | id | name | slary | +----+------ ...

  3. 小米5查看设备号信息及验证type-c数据线

    首先,下载adb软件. 接着打开系统的开发者模式和调试模式. 打开cmd软件,切换到adb软件文件夹所在路径,输入命令:adb devices,则能看到设备的设备号信息. 如果设备号是00000001 ...

  4. xlrd & xlwd

    一.安装xlrd http://pypi.python.org/pypi/xlrd 二.使用介绍 1.导入模块 import xlrd 2.打开Excel文件读取数据 data = xlrd.open ...

  5. mysql 数据库的设计三范式

    三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非主键字段不能相互依赖; 解释: 1NF:原子性 字段不可再分,否则就不是关系数据库; 2NF:唯一性 一个表只说明一个事物 ...

  6. git checkout --ours 【学习笔记】

    用新分支:git checkout --theirs 文件用master分支:git checkout --ours 文件 执行之后git add

  7. windows下安装git和vundle

    git在windows下的版本是: git-for-windows, 或者说是: msysgit: ms-sys-git 直接在 https://gitforwindows.org/上下载 git对w ...

  8. 转载redis持久化的几种方式

    redis持久化的几种方式 1.前言 Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合.支持在服 ...

  9. mysql中data和datatime的区别

    1.显示格式的区别 Date显示格式:YYYY-MM-DD:DateTime显示格式:YYYY-MM-DD HH:mm:ss. 2.显示范围的区别 Date显示范围是1601-01-01 到 9999 ...

  10. Struts2---动态action以及应用

    为了处理各种逻辑业务,根据execute方法来判断请求哪种业务,然后将请求转发到对应的业务处理上, 通过动态请求action对象中的方法,实现某个单一的业务逻辑处理. 动态action的应用 //创建 ...