全栈工程师开发手册 (作者:栾鹏)
python教程全解

keras使用深度网络实现自编码,也就是说对每个样本的n维特征,使用k为特征来表示,实现编码压缩的功能。也实现了特征选择的功能。比如手写体包含754个像素,也就包含754个特征,如果想用两个特征表示。在二维矩阵中就能识别手写体数字该怎么做呢。

自编码器是无监督的学习。它是一种仿人脑的对特征逐层抽象提取的过程,学习过程中有两点:一是无监督学习,即对训练数据不需要进行标签化标注,这种学习是对数据内容的组织形式的学习,提取的是频繁出现的特征;二是逐层抽象,特征是需要不断抽象的。

自编码器(AutoEncoder),即可以使用自身的高阶特征自我编码,自编码器其实也是一种神经网络,其输入和输出是一致的,借助了稀疏编码的思想,目标是使用稀疏的高阶特征重新组合来重构自己。

其中使用到了手写体读写py文件和手写体数据文件。

参考github:https://github.com/626626cdllp/kears/tree/master/AutoEncoder

import numpy as np
import MNIST
np.random.seed(1337)  # for reproducibilityfrom keras.datasets import mnist
from keras.models import Model  # 泛型模型
from keras.layers import Dense, Input
import matplotlib.pyplot as pltX_train, Y_train = MNIST.get_training_data_set(60000, True,False)  # 加载训练样本数据集,和one-hot编码后的样本标签数据集。最大60000
X_test, Y_test = MNIST.get_test_data_set(10000, True,False)  # 加载测试特征数据集,和one-hot编码后的测试标签数据集,最大10000
X_train = np.array(X_train).astype(bool)    # 转化为黑白图
Y_train = np.array(Y_train)
X_test = np.array(X_test).astype(bool)   # 转化为黑白图
Y_test = np.array(Y_test)
print('样本数据集的维度:', X_train.shape,Y_train.shape)   # (600, 784)  (600, 10)
print('测试数据集的维度:', X_test.shape,Y_test.shape)   # (100, 784) (100, 10)# 压缩特征维度至2维
encoding_dim = 2# this is our input placeholder
input_img = Input(shape=(784,))# 编码层
encoded = Dense(128, activation='relu')(input_img)
encoded = Dense(64, activation='relu')(encoded)
encoded = Dense(10, activation='relu')(encoded)
encoder_output = Dense(encoding_dim)(encoded)# 解码层
decoded = Dense(10, activation='relu')(encoder_output)
decoded = Dense(64, activation='relu')(decoded)
decoded = Dense(128, activation='relu')(decoded)
decoded = Dense(784, activation='tanh')(decoded)# 构建自编码模型
autoencoder = Model(inputs=input_img, outputs=decoded)# 构建编码模型
encoder = Model(inputs=input_img, outputs=encoder_output)# compile autoencoder
autoencoder.compile(optimizer='adam', loss='mse')# 将训练特征即作为输入又作为输出,这样就同时训练的编码和解码
autoencoder.fit(X_train, X_train, epochs=200, batch_size=256, shuffle=True)# plotting
encoded_imgs = encoder.predict(X_test)
print(encoded_imgs)
plt.scatter(encoded_imgs[:, 0], encoded_imgs[:, 1], c=Y_test, s=6)
plt.colorbar()
plt.show()


在代码中我们应用了一个小技巧,就是将灰度图转化为了黑白图。这就简化了模型。从结果图中我们可以看出不同数字的手写体压缩伟二维后,仍然具有很好的区分。通过在二维中我们也能把他们进行区分,所以这个二维特性就是源784维的一个有效压缩。

python机器学习库keras——AutoEncoder自编码、特征压缩相关推荐

  1. python机器学习库keras——CNN卷积神经网络识别手写体

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏) python教程全解 keras使用CNN识别手写体 其 ...

  2. python机器学习库keras——线性回归、逻辑回归、一般逻辑回归

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 线性回归 import numpy as npfrom keras.models import Sequential from ker ...

  3. python机器学习库keras——CNN卷积神经网络人脸识别

    全栈工程师开发手册 (作者:栾鹏) python教程全解 github地址:https://github.com/626626cdllp/kears/tree/master/Face_Recognit ...

  4. 功能极其强大,这8款 Python 机器学习库真香

    大家好,今天给大家分享8款 Python 机器学习库,每一款都值得研究一下,喜欢的小伙伴点赞.收藏 关注.文末提供技术交流群. 推荐文章 有人把吴恩达老师的机器学习和深度学习做成了中文版 上瘾了,最近 ...

  5. Python 机器学习库 Top 10,你值得拥有!

    随着人工智能技术的发展与普及,Python 超越了许多其他编程语言,成为了机器学习领域中最热门最常用的编程语言之一.有许多原因致使 Python 在众多开发者中如此受追捧,其中之一便是其拥有大量的与机 ...

  6. 【Python学习系列十三】Python机器学习库scikit-learn实现逻辑回归

    逻辑回归基础知识可参考:http://blog.csdn.net/fjssharpsword/article/details/54580552 python内部算法已经实现了,最重要是理解y=f(x) ...

  7. python机器学习库_Python机器学习库 Top 10,你值得拥有!

    随着人工智能技术的发展与普及,Python超越了许多其他编程语言,成为了机器学习领域中最热门最常用的编程语言之一.有许多原因致使Python在众多开发者中如此受追捧,其中之一便是其拥有大量的与机器学习 ...

  8. Python机器学习库scikit-learn实践

    Python机器学习库scikit-learn实践 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.概述 机器学习算法在近几年大数据点燃的热火熏陶下已经变得 ...

  9. [转载] Python机器学习库scikit-learn使用小结(二)

    参考链接: Scikit-learn中的模型构建:Python机器学习库 scikit-learn库(后三小结) 在做数据分析和挖掘的过程中,数据的处理(标准化).划分.快速建模都是必不可少的方式.这 ...

最新文章

  1. mysql 数据库导入导出方法总结
  2. 有些数的素因子只有3,5,7.请设计一个算法,找出其中第k个数
  3. Hibernate的延迟加载
  4. C++ explicit关键字
  5. 【翻译】Brewer's CAP Theorem CAP定理
  6. 如何确定类型是否使用C#反射实现接口
  7. samba服务器的设置
  8. 24种设计模式-生成器模式
  9. springboot xml转json工具类
  10. 系统编程之实战小项目-利用LVGL 与 mplayer制作音频播放器
  11. Matplotlib颜色设置
  12. policy服务器未能登陆,开机出现Group Policy Client服务未能登录的解决措施
  13. 黑马SpringBoot --基础篇
  14. STM32_RS485通信异常
  15. JS学习笔记 - Extends
  16. 天兔oracle,Lepus_天兔的安装
  17. android手机刷机的作用,安卓手机几种刷机模式作用及分区介绍
  18. 带权重的随机数算法的实现
  19. h5向app传递参数
  20. 计算机无法读入内存怎么办,Win10提示内存不能为read怎么办 三种方法快速解决内存read问题...

热门文章

  1. 震撼上市!北朝鲜语对话语音识别数据库
  2. npm收录了哪些包_使用VS Code轻松找到npm软件包中的漏洞(Vuln Cost)
  3. JavaScript var语句简析
  4. Git创建分支并上传~满满的干货哦
  5. Vue-Less的自动和手动引入
  6. 无限极分类php简单,创建无限极分类树型结构的简单方法
  7. JavaBean 与 EJB 的区别
  8. C# 字典键值对排序 属性的key和value排序
  9. LayUI数据表格复选框显示不居中问题
  10. mysql 5.6 TIMESTAMP