Tensorflow2.0笔记 - AutoEncoder做FashionMnist数据集训练

        本笔记记录自编码器做FashionMnist数据集训练,关于autoencoder的原理,请自行百度。

import os
import time
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import datasets, layers, optimizers, Sequential, metrics, Input,losses
from PIL import Image
from matplotlib import pyplot as plt
import numpy as np
from tensorflow.keras.models import Model

os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
#tf.random.set_seed(12345)
tf.__version__

#加载fashion mnist数据集
(x_train, _), (x_test, _) = datasets.fashion_mnist.load_data()
#图片像素数据范围限值到[0,1]
x_train = x_train.astype('float32') / 255.
x_test = x_test.astype('float32') / 255.

print (x_train.shape)
print (x_test.shape)

h_dim = 64 
class Autoencoder(Model):
  def __init__(self, h_dim):
    super(Autoencoder, self).__init__()
    self.h_dim = h_dim   
    #encoder层,[b, 28, 28] => [b, 784] => [b, h_dim]
    self.encoder = tf.keras.Sequential([
      layers.Flatten(),
      layers.Dense(256, activation='relu'),
      layers.Dense(h_dim, activation='relu'),
    ])
    #decoder层,[b, h_dim] => [b,784] => [b, 28, 28]
    self.decoder = tf.keras.Sequential([
      layers.Dense(784, activation='sigmoid'),
      #恢复成28x28的图片
      layers.Reshape((28, 28))
    ])

  def call(self, x):
    encoded = self.encoder(x)
    decoded = self.decoder(encoded)
    return decoded

model = Autoencoder(h_dim)

model.compile(optimizer='adam', loss=losses.MeanSquaredError())
model.fit(x_train, x_train,
                epochs=10,
                shuffle=True,
                validation_data=(x_test, x_test))


encoded_imgs = model.encoder(x_test).numpy()
decoded_imgs = model.decoder(encoded_imgs).numpy()
n = 10
plt.figure(figsize=(20, 4))
for i in range(n):
  #绘制原始图像
  ax = plt.subplot(2, n, i + 1)
  plt.imshow(x_test[i])
  plt.title("original")
  plt.gray()
  ax.get_xaxis().set_visible(False)
  ax.get_yaxis().set_visible(False)

  #绘制重建的图像
  ax = plt.subplot(2, n, i + 1 + n)
  plt.imshow(decoded_imgs[i])
  plt.title("reconstructed")
  plt.gray()
  ax.get_xaxis().set_visible(False)
  ax.get_yaxis().set_visible(False)
plt.show()

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/660132.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小阿轩yx-Shell编程之正则表达式与文本处理器

小阿轩yx-Shell编程之正则表达式与文本处理器 正则表达式 (RegularExpression,RE) 正则表达式概述 正则表达式的定义 又称 正规表达式常规表达式 代码中常简写为 regex、regexp 或 RE 正则表达式 使用单个字符串来描述、匹配一系列符…

如何连接SharePoint?

知行之桥EDI系统支持连接SharePoint,通过在成熟的SharePoint端口(知行之桥EDI系统中的端口是指功能模块)的可视化界面中进行简单配置,即可创建连接。 创建一个SharePoint 端口 本操作指南基于知行之桥EDI系统2024版,…

[LitCTF 2023]yafu (中级) (素数分解)

题目: from Crypto.Util.number import * from secret import flagm bytes_to_long(flag) n 1 for i in range(15):n *getPrime(32) e 65537 c pow(m,e,n) print(fn {n}) print(fc {c})n 152412082177688498871800101395902107678314310182046454156816957…

k8s 全面掌控日志系统

概述 为了提高系统运维和故障排查的效率, 日志系统采用 ELK(Elasticsearch、Logstash、Kibana)技术栈,通过 FileBeats 作为日志收集器,将来自不同节点的日志数据汇总并存储在 Elasticsearch 中,最终通过 K…

[leetcode hot150]第二百三十六题,二叉树的最近公共祖先

题目: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个…

差分曼彻斯特编码详解

这是一种双向码,和曼彻斯特编码不同的是,这种码元中间的电平转换边只作为定时信号,不表示数据。数据的表示在于每一位开始处是否有电平转换:有电平转换则表示0,无则表示1。然后这就出现一个问题,很多小伙伴…

Windows系统部署YOLOv5 v6.1版本的训练与推理环境保姆级教程

文章目录 一 概述二 依赖环境(prerequisites)2.1 硬件环境2.2 软件环境 三 环境安装3.1 创建并激活虚拟环境3.2 安装Pytorch与torchvision3.3 校验Pytorch安装3.4 下载 YOLOv5 v6.1 源码3.5 安装 YOLOv5 依赖3.6 下载预训练模型3.7 安装其他依赖3.8 测试环境安装3.9 测试训练流…

一文讲清楚:如何做好建设工程项目管理?

在房地产开发中,作为项目负责人我目前的状况成了一个大管家,还要管理工程质量。上至各部门领导的关系维护,下到工人的吃喝拉撒都要我操心,还要没完没了的处理四邻纠纷和拆迁户的纠纷,每天都搞得很疲惫,如何…

第十节 SpringBoot Starter 实战之 redis 滑动窗口

使用 redis 实现滑动窗口,我们会基于这个场景,建立一个 Starter,在这之前,我们需要先。理解这个场景。 关键字:滑动窗口、流式计算、lua脚本、redis、zset、starter 概要:本文封装 redis 的API&#xff0c…

百亿数据存储-高并发搜索如何设计?

最近好多小伙伴都跑来问小北,百亿级别的数据存储要怎么设计架构啊? 听说面试里经常问到这个问题。 就像前几天,有位同学去字节面试,就碰到了这个问题: “百亿级数据存储,你怎么设计?” 他们回答…

Scikit-Learn随机森林回归

Scikit-Learn随机森林回归 1、随机森林1.1、集成学习1.2、Bagging方法1.3、随机森林算法1.4、随机森林的优缺点2、Scikit-Learn随机森林回归2.1、Scikit-Learn随机森林回归API2.2、随机森林回归实践(加州房价预测)1、随机森林 随机森林是一种由决策树构成的集成算法,它在大多…

QT::QNetworkReply类readAll()读取不到数据的可能原因

程序中,当发送请求时,并没有加锁,而是在响应函数中加了锁,导致可能某个请求的finished信号影响到其他请求响应数据的读取 connect(reply,&QNetworkReply::finished,this,&Display::replyFinished);参考这篇文章&#xff…

闪电加载:Hexo博客性能优化全攻略

巴索罗缪大熊 前言 这些年积累了很多前端性能优化的知识点和思路,日常工作很少涉及技术层极限优化,近期终于一点点把博客独立搭建并部署了,对之前的一些技术点进行了深度探索,最终结果也达到了预期效果,由于水平有限&…

怎么从视频中提取音频?这里有三种提取妙招

怎么从视频中提取音频?在数字媒体日益丰富的今天,视频内容成为了信息传播的重要形式。但有时我们可能只需要视频中的音频部分,用于制作播客、音乐剪辑或语音分析等。幸运的是,技术的发展为我们提供了多种从视频中高效提取音频的方…

如何降本增效获得目标客户?AI企业使用联盟营销这个方法就对了!

AI工具市场正在迅速发展,现仍有不少企业陆续涌出,那么如何让你的工具受到目标群体的关注呢?这相比是AI工具营销人员一直在思考的问题。 为什么AI企业难以获客呢? 即使这个市场正蓬勃发展,也无法保证营销就能轻易成功…

【问题解决】pycharm中添加python interpreter报错 conda excutable is no found

选择安装目录下的conda.bat文件,然后点击“Load Environments”按钮,然后在列表中选择conda环境即可。

开源表单流程设计器有哪几个突出的优势特点?

当前,传统的表单制作已经无法满足现在企业的发展需求了。想要实现高效率发展,需要引进先进的低代码技术平台、开源表单流程设计器等优秀软件平台助力发展。它们具有可视化操作界面、灵活好操作、易维护、效率高等诸多优势特点,在推动企业实现…

蓝桥杯嵌入式 第六届国赛 更新中……

题目 配置 注意事项 复制LCD的工程,先配置资源 --- 勾选完选项一定要再看一眼,可能选择错误 ADC:配置ADC2_IN15,对应PB15引脚 EEROM,配置PB6和PB7 按键 输入模式PB0、PB1、PB2、PA0 LED 一定要使能PD2 PWM互补输出&…

vue3 + ts 实现IP地址及Mac地址输入框功能

1、组件完成代码 <template><div class"ip-input"><div v-for"(item, index) in ipArr" :key"index" class"ip-input__item-wrap"><input ref"ipInput" v-model"ipArr[index]" type"t…

AI预测福彩3D采取888=3策略+和值012路一缩定乾坤测试5月29日预测第5弹

今天继续基于8883的大底&#xff0c;使用尽可能少的条件进行缩号&#xff0c;同时&#xff0c;同样准备两套方案&#xff0c;一套是我自己的条件进行缩号&#xff0c;另外一套是8883的大底结合2码不定位奖号预测二次缩水来杀号。好了&#xff0c;直接上结果吧~ 首先&…