张量流实现稀疏自动编码器

时间:2017-10-17 08:48:10

标签: python tensorflow autoencoder rbm

我正在尝试实现如下的简单自动编码器。

输入要素的数量是2,我想建立稀疏自动编码器以减少尺寸为1.我选择的节点数为2(输入),8(隐藏),1(缩减特征),8(隐藏),2(输出)比仅使用(2,1,2)节点增加一些复杂性。样本数N约为10000。 'DATA'只是一个包含整数值的2x10000矩阵。

import tensorflow as tf

x = tf.placeholder(shape=[None, 2])
w1 = tf.Variable(tf.random_normal(shape=[2, 8]))
w2 = tf.Variable(tf.random_normal(shape=[8, 1]))
h1 = tf.nn.relu(tf.matmul(x, w1))
encoded = tf.matmul(h1, w2)
h2 = tf.nn.relu(encoded)
h3 = tf.nn.relu(tf.matmul(h2, tf.transpose(w2)))
y = tf.matmul(h3, tf.transpose(w1))
mse = tf.reduce_mean(tf.squared_difference(x, y))
optimizer = 
tf.train.GradientDescentOptimizer(learning_rate=learning_rate).minimize(mse)
sess = tf.Session()
sess.run(init)
fd = {x: DATA}
loss_value, reduced_feature = sess.run([mse, encoded], feed_dict=fd)

我对实现有2个问题,因为结果与我预期的完全不同。

  1. 此实施是否正确?变量'reduced_feature'是否会显示来自2个特征输入的缩小特征(1d特征)?

  2. 如果我想使用比输入更多的隐藏节点,是否应该添加一些稀疏性条件?如果是,您可以为此任务显示一些示例代码吗?

0 个答案:

没有答案