可视化重建

确保自编码器得到适当训练的一种方法是比较输入和输出。 它们必须非常相似,差异应该是不重要的细节。 我们来绘制两个随机数字及其重建:

  1. n_test_digits = 2
  2. X_test = mnist.test.images[:n_test_digits]
  3. with tf.Session() as sess:
  4. [...] # Train the Autoencoder
  5. outputs_val = outputs.eval(feed_dict={X: X_test})
  6. def plot_image(image, shape=[28, 28]):
  7. plt.imshow(image.reshape(shape), cmap="Greys", interpolation="nearest")
  8. plt.axis("off")
  9. for digit_index in range(n_test_digits):
  10. plt.subplot(n_test_digits, 2, digit_index * 2 + 1)
  11. plot_image(X_test[digit_index])
  12. plt.subplot(n_test_digits, 2, digit_index * 2 + 2)
  13. plot_image(outputs_val[digit_index])

可视化重建 - 图1

看起来够接近。 所以自编码器已经适当地学会了重现它,但是它学到了有用的特性? 让我们来看看。