生成数字

现在让我们使用这个变分自编码器来生成看起来像手写数字的图像。 我们所需要做的就是训练模型,然后从高斯分布中对随机编码进行采样并对它们进行解码。

  1. import numpy as np
  2. n_digits = 60
  3. n_epochs = 50
  4. batch_size = 150
  5. with tf.Session() as sess:
  6. init.run()
  7. for epoch in range(n_epochs):
  8. n_batches = mnist.train.num_examples // batch_size
  9. for iteration in range(n_batches):
  10. X_batch, y_batch = mnist.train.next_batch(batch_size)
  11. sess.run(training_op, feed_dict={X: X_batch})
  12. codings_rnd = np.random.normal(size=[n_digits, n_hidden3])
  13. outputs_val = outputs.eval(feed_dict={hidden3: codings_rnd})

现在我们可以看到由autoencoder生成的“手写”数字是什么样的(参见图15-12):

  1. for iteration in range(n_digits):
  2. plt.subplot(n_digits, 10, iteration + 1)
  3. plot_image(outputs_val[iteration])

生成数字 - 图1