当前课程知识点:深度学习基础 >  第八讲 生成式神经网络 >  附:8.4程序 >  附:8.4程序

返回《深度学习基础》慕课在线视频课程列表

附:8.4程序资料文件与下载

附:8.4程序


  1. #演示内容:利用自动编码器实现手写数字图像数据集的二维平面的展示

  2.  

  3. import tensorflow as tf

  4. import matplotlib.pyplot as plt

  5.   

  6. from tensorflow.examples.tutorials.mnist import input_data

  7. mnist = input_data.read_data_sets("MNIST_data/", one_hot=False)#独热编码设为False

  8.  

  9. # xs, ys = mnist.train.next_batch(10)  #这个函数是取出一些数据。是从训练集里一次提取10张图片。则xs中存储的是图像的数据,ys存储的是这些图像对应的类别

  10. # print (ys)  #此时打印的应该是类别

  11. # mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

  12. # xs,ys = mnist.train.next_batch(10)

  13. # print (ys)  #此时打印的应该是独热编码的形式

  14.  

  15.   

  16. learning_rate = 0.01

  17. training_epochs = 10

  18. batch_size = 256 #每次迭代所使用的样本的数目;

  19. display_step = 1 

  20. n_input = 784  #每个样本都是一张28 * 28像素的灰度手写数字图片。

  21.  

  22. #定义输入,可以理解为采用占位符进行占位,待实际运行时进行具体填充,None表示运行时指定,是指样本的个数。

  23. = tf.placeholder("float", [None, n_input]) 

  24.  

  25. n_hidden_1 = 128

  26. n_hidden_2 = 64

  27. n_hidden_3 = 10

  28. n_hidden_4 = 2

  29. weights = {

  30.     'encoder_h1': tf.Variable(tf.truncated_normal([n_input, n_hidden_1],)),

  31.     'encoder_h2': tf.Variable(tf.truncated_normal([n_hidden_1, n_hidden_2],)),

  32.     'encoder_h3': tf.Variable(tf.truncated_normal([n_hidden_2, n_hidden_3],)),

  33.     'encoder_h4': tf.Variable(tf.truncated_normal([n_hidden_3, n_hidden_4],)),

  34.     'decoder_h1': tf.Variable(tf.truncated_normal([n_hidden_4, n_hidden_3],)),

  35.     'decoder_h2': tf.Variable(tf.truncated_normal([n_hidden_3, n_hidden_2],)),

  36.     'decoder_h3': tf.Variable(tf.truncated_normal([n_hidden_2, n_hidden_1],)),

  37.     'decoder_h4': tf.Variable(tf.truncated_normal([n_hidden_1, n_input],)),

  38. }

  39. biases = {

  40.     'encoder_b1': tf.Variable(tf.random_normal([n_hidden_1])),

  41.     'encoder_b2': tf.Variable(tf.random_normal([n_hidden_2])),

  42.     'encoder_b3': tf.Variable(tf.random_normal([n_hidden_3])),

  43.     'encoder_b4': tf.Variable(tf.random_normal([n_hidden_4])),

  44.     'decoder_b1': tf.Variable(tf.random_normal([n_hidden_3])),

  45.     'decoder_b2': tf.Variable(tf.random_normal([n_hidden_2])),

  46.     'decoder_b3': tf.Variable(tf.random_normal([n_hidden_1])),

  47.     'decoder_b4': tf.Variable(tf.random_normal([n_input])),

  48. }

  49. def encoder(x):

  50.     layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(x, weights['encoder_h1']),

  51.                                    biases['encoder_b1']))

  52.     layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1, weights['encoder_h2']),

  53.                                    biases['encoder_b2']))

  54.     layer_3 = tf.nn.sigmoid(tf.add(tf.matmul(layer_2, weights['encoder_h3']),

  55.                                    biases['encoder_b3']))

  56.     # 为了便于编码层的输出,编码层随后一层不使用激活函数

  57.     layer_4 = tf.add(tf.matmul(layer_3, weights['encoder_h4']),

  58.                                     biases['encoder_b4'])

  59.     return layer_4

  60.   

  61. def decoder(x):

  62.     layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(x, weights['decoder_h1']),

  63.                                    biases['decoder_b1']))

  64.     layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1, weights['decoder_h2']),

  65.                                    biases['decoder_b2']))

  66.     layer_3 = tf.nn.sigmoid(tf.add(tf.matmul(layer_2, weights['decoder_h3']),

  67.                                 biases['decoder_b3']))

  68.     layer_4 = tf.nn.sigmoid(tf.add(tf.matmul(layer_3, weights['decoder_h4']),

  69.                                 biases['decoder_b4']))

  70.     return layer_4

  71.   

  72. encoder_op = encoder(X)

  73. decoder_op = decoder(encoder_op)

  74.   

  75. y_pred = decoder_op

  76. y_true = X

  77.   

  78. cost = tf.reduce_mean(tf.pow(y_true - y_pred, 2))

  79. optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cost)

  80.   

  81. with tf.Session() as sess:

  82.     # tf.initialize_all_variables() no long valid from

  83.     # 2017-03-02 if using tensorflow >= 0.12

  84.     if int((tf.__version__).split('.')[1]) < 12 and int((tf.__version__).split('.')[0]) < 1:

  85.         init = tf.initialize_all_variables()

  86.     else:

  87.         init = tf.global_variables_initializer()

  88.     sess.run(init)

  89.     total_batch = int(mnist.train.num_examples/batch_size)

  90.     for epoch in range(training_epochs):

  91.         for in range(total_batch):

  92.             batch_xs, batch_ys = mnist.train.next_batch(batch_size)  

  93.             _, c = sess.run([optimizer, cost], feed_dict={X: batch_xs})

  94.         if epoch % display_step == 0:

  95.             print("Epoch:"'%04d' % (epoch+1), "cost=""{:.9f}".format(c))

  96.     print("Optimization Finished!")

  97.   

  98.     encoder_result = sess.run(encoder_op, feed_dict={X: mnist.test.images})

  99.     plt.scatter(encoder_result[:, 0], encoder_result[:, 1], c=mnist.test.labels)

  100.     plt.colorbar()

  101.     plt.show()


上传附件

支持rar,zip格式大小,大小50M以内


返回《深度学习基础》慕课在线视频列表

深度学习基础课程列表:

第一讲 深度学习概述

-1.1 深度学习的引出

-1.2 数据集及其拆分

-1.3 分类及其性能度量

-1.4 回归问题及其性能评价

-1.5 一致性的评价方法

-1.6 程序讲解:使用Sklearn进行精确率-召回率曲线的绘制

-第一讲讲义

-第一讲 作业

-附:1.6程序

第二讲 特征工程概述

- 2.1 特征工程

-2.2 向量空间模型及文本相似度计算

-2.3 特征处理(特征缩放、选择及降维)

-2.4 程序讲解:使用sklearn对文档进行向量化的实例

-2.5 程序讲解:使用sklearn进行量纲缩放的实例

- 第二讲 讲义

-第二讲 作业

-附:2.4程序

-附:2.5程序

第三讲 回归问题及正则化

-3.1 线性回归模型及其求解方法

-3.2 多元回归与多项式回归

-3.3 损失函数的正则化

- 3.4 逻辑回归

-3.5 程序讲解:使用sklearn进行线性回归和二次回归的比较的程序示例

-第三讲讲义

-第三讲 作业

-附:3.5程序

第四讲 信息熵及梯度计算

-4.1 信息熵

-4.2 反向传播中的梯度

-4.3 感知机

-4.4 程序讲解:正向传播和反向传播的程序示例

-4.5 程序讲解:信息熵和互信息的计算程序示例

-第四讲讲义

-第四讲 作业

-附:4.5程序

第五讲 循环神经网络及其变体

-5.1 循环神经网络

-5.2 长短时记忆网络

-5.3 双向循环神经网络和注意力机制

-5.4 程序讲解:循环神经网络的程序示例

-第五讲 讲义

-第五讲 作业

-附:5.4程序

第六讲 卷积神经网络

-6.1 卷积与卷积神经网络

-6.2 LeNet-5 模型分析

-6.3 程序讲解:卷积神经网络的程序示例

-第六讲 讲义

-第六讲 作业

-附:6.3程序

第七讲 递归神经网络

-7.1 情感分析及传统求解方法

-7.2 词向量

-7.3 递归神经网络及其变体

-第七讲 讲义

-第七讲 作业

第八讲 生成式神经网络

-8.1 自动编码器

-8.2 变分自动编码器

-8.3 生成对抗网络

-8.4 程序讲解:自动编码器程序示例

-第八讲 作业

-第八讲 讲义

-附:8.4程序

附:8.4程序笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。