Tensorflow学习笔记(三)实现降噪自动编码器--美化计算图
2018-01-10 13:44
423 查看
用tf.name_scope组织计算图,让他的层次更加清晰,更好看
import numpy as np import tensorflow as tf import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # Xavier均匀初始化 ''' 如果网络的权重初始化太小,信号在层间传递时逐渐缩小会难以产生作用,如果权重初始化过大,那信号在层间传递时会被逐渐放大,最终导致发散。 Xavier均匀初始化,这种权重初始化方法会根据某一层网络的输入输出节点数量自动调整最合适的随机分布,让初始化权重不大不小,正好合适。 从数学的角度讲,就是让权重满足0均值,方差为2/(f_in+f_out),随机分布可以使均匀分布或者高斯分布。 ''' def xavier_init(f_in, f_out): low = -1 * np.sqrt(6.0 / (f_in + f_out)) high = 1 * np.sqrt(6.0 / (f_in + f_out)) return tf.random_uniform((f_in, f_out), minval=low, maxval=high, dtype=tf.float32) # 建立了一个均匀分布 # 加性高斯噪声的自动编码器 class AdditiveGaussianNoiseAutoencoder(object): def __init__(self, n_input, n_hidden, transfer_function=tf.nn.softplus, optimizer=tf.train.AdamOptimizer()): # 输入变量数 self.n_input = n_input # 隐藏层节点数 self.n_hidden = n_hidden # 隐藏层激活函数 self.transfer_function = transfer_function # 隐含层和重构层参数 self.weights = dict() with tf.name_scope('Input'): # 输入信号 self.x = tf.placeholder(tf.float32, [None, self.n_input]) with tf.name_scope('NoiseAdder'): self.scale=tf.placeholder(tf.float32,[None,self.n_input]) self.noise_input=self.x+self.scale * tf.random_normal((n_input,)) with tf.name_scope('Encoder'): # 隐藏层 self.weights['w1'] = tf.Variable(xavier_init(self.n_input, self.n_hidden), name='weight1') self.weights['b1'] = tf.Variable(tf.zeros([self.n_hidden]), dtype=tf.float32, name='bias1') self.hidden = self.transfer_function(tf.add(tf.matmul(self.noise_input, self.weights['w1']),self.weights['b1'])) with tf.name_scope('Reconstruction'): # 重构层 self.weights['w2'] = tf.Variable(tf.zeros([self.n_hidden, self.n_input]), dtype=tf.float32, name='weight2') self.weights['b2'] = tf.Variable(tf.zeros([self.n_input]), dtype=tf.float32, name='bias2') self.reconstruction = tf.add(tf.matmul(self.hidden, self.weights['w2']), self.weights['b2']) with tf.name_scope('Loss'): # 将重构的结果与输入做对比,计算损失 self.cost = 0.5 * tf.reduce_mean(tf.pow(tf.subtract(self.reconstruction, self.x), 2)) with tf.name_scope('Train'): # 优化器,用于减小损失 self.optimizer = optimizer.minimize(self.cost) # 初始化所有变量 init = tf.global_variables_initializer() self.sess = tf.Session() self.sess.run(init) print('begin to run session') # 实例化AdditiveGaussianNoiseAutoencoder类对象实例 AGN_AutoEncoder = AdditiveGaussianNoiseAutoencoder(n_input=784, n_hidden=200, transfer_function=tf.nn.softplus, optimizer=tf.train.AdamOptimizer(learning_rate=0.01)) # 把计算图写入事件文件,在TensorBoard里面查看 writer = tf.summary.FileWriter(logdir='logs', graph=AGN_AutoEncoder.sess.graph) writer.close()
相关文章推荐
- Tensorflow学习笔记(二)实现降噪自动编码器--设计计算图
- 1TensorFlow实现自编码器-1.3 TensorFlow实现降噪自动编码器--计算图美化
- 1TensorFlow实现自编码器-1.2TensorFlow实现降噪自动编码器设计计算图
- 基于Tensorflow+Python实现降噪自动编码器(DAE)
- Tensorflow学习笔记(四)降噪自动编码器—运行会话,训练模型
- 1TensorFlow实现自编码器-1.4 TensorFlow实现降噪自动编码器--运行会话,训练模型
- JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
- c#根据公式进行自动计算的实现
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- Masonry实现不同行高的自定义cell布局”行高自动计算"
- 四种方法实现UITableView的cell高度自动计算
- lisp实现自动递归---SICP不确定性计算
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- 实现Excel行插入行删除特殊处理,单元格合并及动态条件单元格公式自动计算功能的VBA 宏示例
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载][续]
- 实现文本自动分类的基础----Term频率计算方法
- tensorflow降噪自动编码器
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- js实现rem自动匹配计算font-size的示例