TensorFlow2教程20:自编码器

Easter79
• 阅读 670

  自动编码器的两个主要组成部分; 编码器和解码器

  编码器将输入压缩成一小组“编码”(通常,编码器输出的维数远小于编码器输入)

  解码器然后将编码器输出扩展为与编码器输入具有相同维度的输出

  换句话说,自动编码器旨在“重建”输入,同时学习数据的有限表示(即“编码”)

  1.导入数据

  (x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()

  x_train = x_train.reshape((-1, 28*28)) / 255.0

  x_test = x_test.reshape((-1, 28*28)) / 255.0

  print(x_train.shape, ' ', y_train.shape)

  print(x_test.shape, ' ', y_test.shape)

  (60000, 784) (60000,)

  (10000, 784) (10000,)

  2.简单的自编码器

  code_dim = 32

  inputs = layers.Input(shape=(x_train.shape[1],), name='inputs')

  code = layers.Dense(code_dim, activation='relu', name='code')(inputs)

  outputs = layers.Dense(x_train.shape[1], activation='softmax', name='outputs')(code)

  auto_encoder = keras.Model(inputs, outputs)

  auto_encoder.summary()

  Model: "model"

  _________________________________________________________________

  Layer (type) Output Shape Param #

  =================================================================

  inputs (InputLayer) [(None, 784)] 0

  _________________________________________________________________

  code (Dense) (None, 32) 25120

  _________________________________________________________________

  outputs (Dense) (None, 784) 25872

  =================================================================

  Total params: 50,992

  Trainable params: 50,992

  Non-trainable params: 0

  _________________________________________________________________

  keras.utils.plot_model(auto_encoder, show_shapes=True)

TensorFlow2教程20:自编码器

  encoder = keras.Model(inputs,code)

  keras.utils.plot_model(encoder, show_shapes=True)

TensorFlow2教程20:自编码器

  decoder_input = keras.Input((code_dim,))

  decoder_output = auto_encoder.layers[-1](decoder_input)

  decoder = keras.Model(decoder_input, decoder_output)

  keras.utils.plot_model(decoder, show_shapes=True)

TensorFlow2教程20:自编码器

       无锡妇科医院哪家好 http://www.xasgfk.cn/

  auto_encoder.compile(optimizer='adam',

  loss='binary_crossentropy')

  训练模型

  %%time

  history = auto_encoder.fit(x_train, x_train, batch_size=64, epochs=100, validation_split=0.1)

  Train on 54000 samples, validate on 6000 samples

  Epoch 1/100

  Epoch 100/100

  54000/54000 [==============================] - 2s 45us/sample - loss: 0.6715 - val_loss: 0.6688

  CPU times: user 6min 53s, sys: 23.2 s, total: 7min 16s

  Wall time: 4min 24s

  encoded = encoder.predict(x_test)

  decoded = decoder.predict(encoded)

  import matplotlib.pyplot as plt

  plt.figure(figsize=(10,4))

  n = 5

  for i in range(n):

  ax = plt.subplot(2, n, i+1)

  plt.imshow(x_test[i].reshape(28,28))

  plt.gray()

  ax.get_xaxis().set_visible(False)

  ax.get_yaxis().set_visible(False)

  ax = plt.subplot(2, n, n+i+1)

  plt.imshow(decoded[i].reshape(28,28))

  plt.gray()

  ax.get_xaxis().set_visible(False)

  ax.get_yaxis().set_visible(False)

  plt.show()

点赞
收藏
评论区
推荐文章
Pytorch构建栈式自编码器实现以图搜图任务(以cifar10做数据集)
(Pytorch构建栈式自编码器实现以图搜图任务)本文旨在使用CIFAR10数据集,构建与训练栈式自编码器,提取数据集中图像的特征;基于所提取的特征完成CIFAR10中任意图像的检索任务并展示效果。搞清楚pytorch与tensorflow区别pytorchpytorch是一种python科学计算框架作用:无缝替换numpy,通过G
Stella981 Stella981
3年前
Netflix:我们是如何评估Codec性能的?
Netflix会定期评估现有和即将推出的视频编解码器,不断优化视频编码技术以提供更高质量的服务。本文介绍了视频编码器性能评估中的几项重要元素以及如何从传统与自适应流媒体两种视角进行编解码器性能对比。本文来自Netflix技术博客,LiveVideoStack进行了翻译。文/JoelSole,LiweiGuo,AndreyNorkin
Easter79 Easter79
3年前
SpringMVC【开发Controller】详解
前言本文主要是讲解在Controller中的开发,主要的知识点有如下:编码过滤器使用注解开发注解@RequestMapping详解业务方法接收参数字符串转日期重定向和转发返回JSONSpringMVC过滤编码器在SpringMVC的控制
Stella981 Stella981
3年前
HEVC、AV1、VVC:如何理解2019年的编解码器世界
!preview(https://pic3.zhimg.com/v245e87edba44b2d8b90d255fa704a38f2_r.jpg)本文讨论了HEVC,AV1和多功能视频编码(VVC)的当前状态,回顾了每种编码器在最近一年的进展。您将从开发者的角度了解每个编解码器的最新进展,包括从编码耗时、成本与编码质量等方面得出的对比结果,并获
Easter79 Easter79
3年前
SpringCloud学习笔记(五)之Feign负载均衡
是什么是一个声明式WebService客户端。使用Feign能让编写WebService客户端更加简单,使用方法是定义一个接口,然后在上面添加注解,同时也支持JAXRS标准的注解。Feign也支持可拔插式的编码器和解码器。SpringCloud对Feign进行了封装,使其支持了SpringM
Stella981 Stella981
3年前
Keras实践笔记6——单层自编码器
importnumpyasnpfromkeras.datasetsimportmnistfromkeras.layersimportDense,Inputfromkeras.modelsimportModelimg_rows,img_cols28,28
Stella981 Stella981
3年前
AV1编码器优化技术
!(https://oscimg.oschina.net/oscnet/1de07eb5978a432db13f4c4bd41dab61.png)正文字数:7318 阅读时长:11分钟AV1视频编解码器是一种由开放媒体联盟AOM开发的royaltyfree的压缩技术。libaom库是AV1的参考软件,应用各种编码器优化技术来实现
Stella981 Stella981
3年前
AV1:为互联网提供开放、免费的视频编解码工具
!(https://oscimg.oschina.net/oscnet/ea2afc18e53a4b838f29d25b713ff5a3.jpg)从学术研究到进入工业界,ZoeLiu一直在算法和音视频领域,目前在谷歌编解码团队为编解码器AV1做开发支持。Zoe畅谈了评定编解码器的标准,以及AV1的最新进度。本文是『下一代编码器』
Stella981 Stella981
3年前
ScreenToGif 代码分析
ScreenToGif项目由四个文件夹组成:1.Files存放协议文件2.GifRecorder存放gif编码器代码3.ScreenToGif存放主代码4.Other存放Hooktest和Translator的代码问题1:GifRecorder和ScreenToGif、Hooktest、Translator下面都
深度学习|transformers的近期工作成果综述
transformers的近期工作成果综述基于transformer的双向编码器表示(BERT)和微软的图灵自然语言生成(TNLG)等模型已经在机器学习世界中广泛的用于自然语言处理(NLP)任务,如机器翻译、文本摘要、问题回答、蛋白质折叠预测,
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k