Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践
自编码器是一种可以或许用来进修对输入数据高效编码的神经收集。若给定一些输入,神经收集起首会应用一系列的变换来将数据映射到低维空间,这部分神经收集就被称为编码器。
然后,收集会应用被编码的低维数据去测验测验重建输入,这部分收集称之为解码器。我们可以应用编码器将数据紧缩为神经收集可以懂得的类型。然而自编码器很罕用做这个目标,因为平日存在比它更为有效的手工编写的算法(例如 jpg 紧缩)。
此外,自编码器还被经常用来履行降袈潆义务,它可以或许学会若何重建原始图像。
什么是变分自编码器?
有很多与自编码器相干的有趣应用。
个中之一被称为变分自编码器(variational autoencoder)。应用变分自编码器不仅可以紧缩数据–还能生成自编码器曾经碰到过的新对象。
应用通用自编码器的时刻,我们根本不知道收集所生成的编码具体是什么。固然我们可以比较不合的编码对象,然则要懂得它内部编码的方法几乎是弗成能的。这也就意味着我们不克不及应用编码器来生成新的对象。我们甚至连输入应当是什么样子的都不知道。
而我们用相反的办法应用变分自编码器。我们不会测验测验着去存眷隐含向量所服大年夜的分布,只须要告诉收集我们想让这个分布转换为什么样子就行了。
平日情况,我们会限制收集来生成具有荡位觚态分布性质的隐含向量。然后,在测验测验生成数据的时刻,我们只须要大年夜这种分布中进行采样,然后榜样本喂给解码器就行,解码器会返回新的对象,看上去就和我们用来练习收集的对象一样。
下面我们将介绍若何应用 Python 和 TensorFlow 实现这一过程,我们要教会我们的收集来画 MNIST 字符。
第一步加载练习数据
起首我们来履行一些根本的导入操作。TensorFlow 具有异常便利的函数来让我们可以或许很轻易地拜访 MNIST 数据集。
- import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt
- %matplotlib inlinefrom tensorflow.examples.tutorials.mnist import input_data
- mnist = input_data.read_data_sets('MNIST_data')
定义编码器
定义输入数据和输出数据
计算损掉函数,并实施一个高斯隐蔽分布
MNIST 图像的维度是 28*28 像素,只有单色通道。我们的输入数据 X_in 是一批一批的 MNIST 字符,收集会进修若何重建它们。然后在一个占位符 Y 中输出它们,输出和输入具有雷同的维度。
Y_flat 将会在后面计算损掉函数的时刻用到,keep_prob 将会在应用 dropout 的时刻用到(作为一种正则化的办法)。在练习的过程中,它的值会设为 0.8,当生成新数据的时刻,我们不应用 dropout,所以它的值会变成 1。
lrelu 函数须要自及定义,因为 TensorFlow 中并没有预定义一个 Leaky ReLU 函数。
- tf.reset_default_graph()
- batch_size = 64X_in = tf.placeholder(dtype=tf.float32, shape=[None, 28, 28], name='X')
- Y = tf.placeholder(dtype=tf.float32, shape=[None, 28, 28], name='Y')
- Y_flat = tf.reshape(Y, shape=[-1, 28 * 28])
- keep_prob = tf.placeholder(dtype=tf.float32, shape=(), name='keep_prob')
- dec_in_channels = 1n_latent = 8reshaped_dim = [-1, 7, 7, dec_in_channels]
- inputs_decoder = 49 * dec_in_channels / 2def lrelu(x, alpha=0.3): return tf.maximum(x, tf.multiply(x, alpha))
因为我们的输入是图像,所以应用一些卷积变换会加倍合理。最值得留意的是我们在编码器中创建了两个向量,因为编码器应当创建服大年夜高斯分布的对象。
- 一个是均值向量
- 一个是标准差向量
在后面你会看到,我们是若何「强迫」编码器来包管它确切生成 了服大年夜正态分布的数据点,我们可以把将会被输入到解码器中的编码值表示为 z。在计算损掉函数的时刻,我们会须要我们所选分布的均值和标准差。
推荐阅读
Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 有若干法度榜样员,就有若干定义。所以我只询问了一些异常有名且经验丰富的法度榜样员。 优良法度榜样员>>>详细阅读
本文标题:如何使用TensorFlow和自编码器模型生成手写数字
地址:http://www.17bianji.com/lsqh/38737.html
1/2 1