自编码Autoencoder(非监督学习)
Autoencoder
# Parameter
learning_rate=0.01
training_epochs=5
# 五组训练
batch_size=256
display_step=1
examples_to_show=10MNIST数据,每张图片大小是 28x28 pix,即 784 Features:
# Network Parameters
n_input=784
# MNIST data input (img shape: 28*28)# hidden layer settings
n_hidden_1 = 256 # 1st layer num features
n_hidden_2 = 128 # 2nd layer num features
weights = {
'encoder_h1':tf.Variable(tf.random_normal([n_input,n_hidden_1])),
'encoder_h2': tf.Variable(tf.random_normal([n_hidden_1,n_hidden_2])),
'decoder_h1': tf.Variable(tf.random_normal([n_hidden_2,n_hidden_1])),
'decoder_h2': tf.Variable(tf.random_normal([n_hidden_1, n_input])),
}
biases = {
'encoder_b1': tf.Variable(tf.random_normal([n_hidden_1])),
'encoder_b2': tf.Variable(tf.random_normal([n_hidden_2])),
'decoder_b1': tf.Variable(tf.random_normal([n_hidden_1])),
'decoder_b2': tf.Variable(tf.random_normal([n_input])),
}压缩之后的值在 [0,1] 这个范围内。在decoder过程中,通常使用对应于encoder的 Activation function:
对 “原始的有 784 Features 的数据集” 和 “通过 ‘Prediction’ 得出的有 784 Features 的数据集” 进行最小二乘法的计算,并且使 cost 最小化:
输出时MNIST数据集经过压缩之后 x 的最大值是1,而非255:

Encoder
通过四层 Hidden Layers 实现将 784 Features 压缩至 2 Features:
在第四层时,输出量不再是 [0,1] 范围内的数,而是将数据通过默认的 Linear activation function 调整为 (-∞,∞) :

Last updated
Was this helpful?