深度学习实战笔记三:编码器、解码器+mnist+kears
对matplotlib的解释
import matplotlib.pyplot as plt
import numpy as np
a = [[1,2]]
a = np.array(a)
c = a[:,0]#‘:'表示:不管a中有几组数据,打印所有组数据的下标为0的数据 c=1
b = a[:,1] #b=2
print(c,b)#[1] [2]
print(a.shape)#(1,2),表示一行两列
#画散点图
plt.scatter(c,b)#画一个点,点的坐标是(1,2)
plt.show()
keras 非监督Autoencoding学习 非序列化Sequential
#分类
import numpy as np
from keras.datasets import mnist
from keras.models import Model
from keras.layers import Dense,Input
import matplotlib.pyplot as plt
from PIL import Image
#加载数据集 mnist
(X_train,Y_train),(X_test,Y_test) = mnist.load_data()
#数据处理
#转浮点、归一化
#不需要处理标签
#因为是图和图之间相比
X_train = X_train.astype(‘float32’)/255.0 #set as type to
X_test = X_test.astype(‘float32’)/255.0
#reshape数据形状 适用于dense层的input需要
X_train = X_train.reshape(X_train.shape[0],784)#X_train.shape[0]是训练集的记录数目
X_test = X_test.reshape(-1,784)#-1缺省表示测试集的所有记录数目,等价于X_test.shape[0]
#定义encoding的终极维度
#画散点图的时候使用维度为2
#encoding_dim = 2 #输出的时候需要用坐标来可视化
#打印编码层的输出时,2个维度不好打印成图片,所以该写成维度为4
encoding_dim = 4
#定义输入层Input可以接受的数据shape,类似tensorflow的 placeholder
input_img = Input(shape=(784,)) #此时的Input像一个‘层’
#定义编码层 把数据从大维度降低到小维度 如28*28 -》 784
#第一层编码
encoded = Dense(
units = 128, #第一层的输出维度为128
activation = ‘relu’
)(input_img)
#第二层编码
encoded = Dense(
units = 64,
activation=‘relu’
)(encoded) #此处的输入是来自于上一层的编码器encoded,下面的也类似
#第三层编码
encoded = Dense(
units = 32,
activation=‘relu’
)(encoded)
#第四层编码 并输出给 解码层
encoded_output = Dense(
units = encoding_dim,
)(encoded)
#第四层结束之后可以输出结果了,如果你想的话
#四层编码层的另一种呈现方式
#encoded = Dense(units = 128,activation = ‘relu’)(input_img)
#encoded = Dense(units = 64,activation = ‘relu’)(encoded)
#encoded = Dense(units = 32,activation = ‘relu’)(encoded)
#encoded_output = Dense(units = encoding_dim)(encoded)
#定义解码层
#第一层解码
decoded = Dense(units = 32,activation=‘relu’)(encoded_output)
#第二层编码
decoded = Dense(units= 64,activation=‘relu’)(decoded)
#第三层编码
decoded = Dense(units = 128,activation=‘relu’)(decoded)
#第四层编码
#还原到784
#改变了激活函数
#decoded=Dense(units = 784,activation=‘tanh’)(decoded)
decoded = Dense(units=784,activation=‘tanh’)(decoded)
#构建自动编码模型结构
#谁给model数据,model处理完给谁
autoencoder = Model(inputs=input_img,output=decoded)
#构建编码模型结构
encoder = Model(inputs=input_img,outputs=encoded_output)
#编译模型
autoencoder.compile(optimizer=‘adam’,loss=‘mse’) #均差方
#训练
#原图经过编码、解码后得到一个复原的图,这个复原图和原图来进行比对
autoencoder.fit(
x = X_train,
y = X_train,
epochs = 10,
batch_size = 512,
shuffle = True,#每个训练epoch完成后,数据会打乱
)
autoencoder.save(’/content/drive/My Drive/app/autoencoder_mnist.h5’)
#读取自己的图片
img_test5 = Image.open(’/content/drive/My Drive/app/my_image/test5.jpg’)
img_5 = Image.open(’/content/drive/My Drive/app/my_image/5.jpg’)
img_test5 = np.array(img_test5)
img_5 = np.array(img_5)
encoded_img_test5 = encoder.predict(img_test5.reshape(1,784))
encoded_img_5 = encoder.predict(img_3.reshape(1,784))
#打印编码层之后的结果,看看两个数字相同的图片在特征提取上是否相近
print(encoded_img_test5)
print(encoded_img_5)
encoded_imgs = encoder.predict(X_test)
#打印第一组数据
print(encoded_imgs[0])
plt.scatter(x=encoded_imgs[:,0],y=encoded_imgs[:,1],c=Y_test,s=2)#c主要用来控制颜色,可以是一个数值数组;s是设置精度的
plt.show()
#打印一个 三个图对比情况
#全网络输出
decoded_img = autoencoder.predict(X_test[1].reshape(1,784)) #此处必须要reshape一下,告诉系统,这是一个(784,)的样本
#编码层输出
encoded_img = encoder.predict(X_test[1].reshape(1,784))
plt.figure(1)
plt.imshow(decoded_img[0].reshape(28,28))
plt.figure(2)
plt.imshow(X_test[1].reshape(28,28))
plt.figure(3)
#因为2个维度没法打印。所以将上文中的encoded_dim改为4,然后编码层的输出结构就可以被reshape为2*2
plt.imshow(encoded_img[0].reshape(2,2))
第四层编码层结束之后,如果想要输出的话会得到中间的比较模糊的那个图。
深度学习实战笔记三:编码器、解码器+mnist+kears相关推荐
- 转:tensorflow深度学习实战笔记(二):把训练好的模型进行固化
原文地址:https://blog.csdn.net/chenyuping333/article/details/82106863 目录 一.导出前向传播图 二.对模型进行固化 三.pb文件转tfli ...
- 深度学习之seq2seq、编码器解码器、注意力机制、Transformer
深度学习之seq2seq.编码器解码器(Encoder-Decoder).注意力机制(Attention).变换器(Transformer) 目录
- Pytorch深度学习实战笔记
- Tensorflow深度学习实战之(七)--MP神经元与BP神经网络模型
本文是在GPU版本的Tensorflow = 2.6.2 , 英伟达显卡驱动CUDA版本 =11.6,Python版本 = 3.6, 显卡为3060的环境下进行验证实验的!!! 文章目录 一.M-P神 ...
- Keras深度学习实战(36)——基于编码器-解码器的机器翻译模型
Keras深度学习实战(36)--基于编码器-解码器的机器翻译模型 0. 前言 1. 模型与数据集分析 1.1 数据集分析 1.2 模型分析 2. 基于编码器-解码器结构的机器翻译模型 2.1 基于编 ...
- 【卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10)】
卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10) 在上一章已经完成了卷积神经网络的结构分析,并通过各个模块理解 ...
- 《Web安全之深度学习实战》笔记:第十三章 DGA域名识别
本小节是讲解DGA域名的识别,在<web安全之机器学习入门>中,曾经通过多节来讲解DGA域名,相关笔记如下: <Web安全之机器学习入门>笔记:第七章 7.6朴素贝叶斯检测DG ...
- 深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening
深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening 主成分分析与白化是在做深度学习训练时最常见的两种预处理的方法,主成分分析是一种我们用的很多的降维的一种手段,通 ...
- 深度学习入门笔记系列(三)——感知器模型和 tensorboard 的使用方法
本系列将分为 8 篇 .今天是第三篇 .主要讲讲感知器模型和 tensorboard 的基本使用方法 . 1. 感知器模型 因为小詹之前写过一篇感知器模型的介绍 ,这里就不赘述了 .有需要巩固的点击如 ...
最新文章
- 【组合数学】递推方程 ( 递推方程示例 1 | 列出递推方程 )
- js中当等于最小值是让代码不执行_网页中JS函数自动执行常用三种方法
- 微信无连接服务器1.104,微信成语猜猜看太子少师答案汇总 太子少师1-104关攻略...
- brew 安装mysql5.6_MacOS 10.14安装和brew更新后无法安装mysql gem
- C语言中volatile关键字与汇编__volatile__
- 自定义QListWidget实现item被hover时改变图标样式(模仿网易云音乐选项列表)(方法二)
- Servlet→DWR实现JAVA服务器端向客户端推送消息
- 武汉群硕面试心得体会(上)
- 基于Hosted WebCore 方式部署Web Role
- qq撤回的消息会在服务器,如何查看qq撤回的消息_查看qq被撤回消息的方法
- Libmodbus 移植
- 京东大数据平台产品体系揭秘
- 《javascript设计模式与开发实践》——第一章(面向对象的javascript)学习记录
- js 鼠标悬浮div显示tip,离开tip消失,不用单独写鼠标离开事件
- Unirech腾讯云代充-通过VNC 登录腾讯云国际版Windows云服务器实例教程
- 多元线性回归分析spss结果解读_多元线性回归分析理论详解及SPSS结果分析
- 《GhostXP_SP2电脑公司经典版v8.2》LONGWANG制作
- 【ArcGIS教程】批量裁剪
- USB口的条形码扫描器接口编程(VB) 转
- 美拍高颜值短视频一键解析批量保存到电脑中
热门文章
- 为什么通常在发送数据埋点请求的时候使用的是 1x1 像素的透明 gif 图片?
- c语言空格键变成删除键怎么变回来,文档空格键怎么变成删除了
- 如何去除word文档中文字下方的红色波浪线
- 基于YOLOv4的交通视频监控车辆识别
- android 最低兼容版本,vue cli3 es6 安卓低版本 兼容问题
- 《商用密码应用与安全性评估》第一章密码基础知识1.6密钥交换协议
- c语言五子棋评估函数,局面评估函数——简介
- Sketch for mac 常用版本下载
- springboot+jspssm中草药商城 供求信息管理系统
- 栈的应用-括号匹配的检验