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

输入要素的数量是2,我想 Build 稀疏自动编码器以减少尺寸为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)

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

  • 这个实现是否正确?变量'reduced_feature'是否会显示来自2个特征输入的缩减特征(1d特征)?

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