自编码器是一种期望输出与输入相等的网络,通常隐含层节点数量应小于输入层的节点数量。网络大体结构如下:
流程如下:首先定义权值初始化函数;
一、定义自编码class,包括:
1、定义参数,网络,cost function,优化函数,参数重置,包括输入输出隐含层权重等各个参数,激活函数softplus和优化器Adam;
2、构建权值字典,关键字w1,b1,w2,b2;定义一步损失优化函数,即每进行一轮训练,就输出一次损失,并对损失进行一次优化;
3、定义最终损失函数,只输出最终优化后的损失;
4、定义激活函数方法,即输出隐含层的结果;
5、定义从hidden向重构层(输出层)的输出函数;
6、定义从input层向重构层(输出层)的输出函数;
7、定义获取权值系数和偏置系数函数;
二、定义样本数据初始化函数,用来对样本数据变成零均值,标准差为1的分布;
三、定义随机数函数,作为batch_size的起点;
四、设置好样本数,最大训练轮数,batch_size大小;
五、根据AGN类创建自编码器实例,输入节点为784,隐含层节点为200,激活函数softplus,优化器Adam,学习速率0.001,噪声系数scale0.01;
六、开始训练。
疑问:cala_total_cost输出的到底是什么?为什么会到600000左右?
代码如下:
from tensorflow.examples.tutorials.mnist import input_