专栏首页深度应用[Keras深度学习浅尝]实战五·使用DNN自编码器实现聚类操作数据降维

[Keras深度学习浅尝]实战五·使用DNN自编码器实现聚类操作数据降维

[Keras深度学习浅尝]实战五·使用DNN自编码器实现聚类操作数据降维

代码部分

# TensorFlow and tf.keras
import tensorflow as tf
from tensorflow import keras

# Helper libraries
import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"
import numpy as np
import matplotlib.pyplot as plt

print(tf.__version__)

fashion_mnist = keras.datasets.fashion_mnist

(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()

print(train_images.shape,train_labels.shape)

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

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

encoding_dim = 2
# encoder layers
input_img = keras.layers.Input(shape=(28*28,))
encoded = keras.layers.Dense(128, activation='relu')(input_img)
encoded = keras.layers.Dense(64, activation='relu')(encoded)
encoded = keras.layers.Dense(10, activation='relu')(encoded)
encoder_output = keras.layers.Dense(encoding_dim)(encoded)

# decoder layers
decoded = keras.layers.Dense(10, activation='relu')(encoder_output)
decoded = keras.layers.Dense(64, activation='relu')(decoded)
decoded = keras.layers.Dense(128, activation='relu')(decoded)
decoder_output = keras.layers.Dense(784, activation='tanh')(decoded)

# construct the autoencoder model

encoder = keras.Model(inputs=input_img, outputs=encoder_output)

autoencoder = keras.Model(inputs=input_img, outputs=decoder_output)


lr = 0.001
autoencoder.compile(optimizer=tf.train.AdamOptimizer(lr),
              loss='mse',
              metrics=['accuracy'])

print(autoencoder.summary())

autoencoder.fit(train_images,train_images,batch_size=1000,epochs=50)


# plotting
encoded_imgs = encoder.predict(test_images)
plt.scatter(encoded_imgs[:, 0], encoded_imgs[:, 1], c=test_labels)
plt.colorbar()
plt.show()

输出结果

Epoch 49/50
60000/60000 [==============================] - 4s 61us/step - loss: 0.0266 - acc: 0.0176
Epoch 50/50
60000/60000 [==============================] - 4s 60us/step - loss: 0.0266 - acc: 0.0182

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [python3 OpenCV3使用技巧]使用numpy矩阵实现RGB转HSI

    看到网上有很多博客都是通过循环遍历的方式来进行RGB转HSI操作,但是我们知道在python中使用Numpy数组并行操作可以更加简洁,速度也更快。

    小宋是呢
  • [开发技巧]·pandas如何保存numpy元素

    在开发的过程中遇到一个问题,就是需要把numpy作为pandas的一个元素进行保存,注意不是作为一列元素。但是实践的过程中却不顺利,会报错,现在我解决了这个问题...

    小宋是呢
  • 『算法理论学』人脸姿态估计算法介绍

    人脸姿态估计算法,主要用以估计输入人脸块的三维欧拉角。一般选取的参考系为相机坐标系,即选择相机作为坐标原点。姿态估计可用于许多业务场景,比如在人脸识别系统的中,...

    小宋是呢
  • 深入理解Java——ConcurrentHashMap源码的分析(JDK1.8)

    在阅读这篇博客之前,希望你对HashMap已经是有所理解的,如果你对java的cas操作也是有一定了解的,因为在这个类中大量使用到了cas相关的操作来保证线程安...

    本人秃顶程序员
  • 分布式存储——ceph 的 python 基础接口

    用户2434869
  • 高通推出Snapdragon 710平台,推动AI和神经网络在移动端的应用

    高通公司宣布推出Snapdragon 710移动平台,旨在推动高端智能手机进入人工智能领域。下一代芯片的重点是人工智能,神经网络以及对高质量照片和视频的支持。

    AiTechYun
  • 使用React hooks处理复杂表单状态数据

    自从React hooks发布以来已经有一段时间了,我很喜欢这个特性。这个hooks把我勾上了!

    前端知否
  • [AWR报告]SQL*Net message from client等待事件

    今天讲SQL*Net message from client 等待事件 和SQL*Net message to client 等待事件

    bsbforever
  • CSS 层叠相关知识指北

    亲爱的观众老爷们大家好~我发现我写文章都是因为工作碰到问题才写,什么探索最前沿的最讨厌了(其实是力有所不及)!言归正传,最近碰到的问题是这个:准备开发一个平台,...

    疯狂的技术宅
  • WebGL 入门-WebGL简介与3D图形学

    什么是WebGL? WebGL是一项使用JavaScript实现3D绘图的技术,浏览器无需插件支持,Web开发者就能借助系统显卡(GPU)进行编写代码从而呈现3...

    庞小明

扫码关注云+社区

领取腾讯云代金券