【TENSORFLOW 无监督学习处理MNIST手写数字数据集】

最优化方法——K-means实现手写数字图像聚类 本篇博客主要介绍K-means算法的原理与流程,降维算法的优化问题解决与使用,并分别使用Matlab、Pycharm分别实现了使用K-means算法在实际问题中(对MNIST手写数字数据集)的聚类并进行分析,并分别使用了PCA与LDA对其进行了降维可视化(内附数据集和python及matlab代码)。 阅读详情

实际上就是训练一个网络,使用手写数字识别的数据作为输入,最后的数据分类是否准确可以通过图像信息显示能得到结果。

# 导入模块
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt

# 加载数据
from tensorflow.examples.tutorials.mnist import input_data

mnist = input_data.read_data_sets("E:\\MNIST_data\\", one_hot=True)

#模型训练
# 设置超参数
learning_rate = 0.01 # 学习率
training_epochs = 20 # 训练轮数
batch_size = 256 # 每次训练的数据
display_step = 1 # 每隔多少轮显示一次训练结果
examples_to_show = 10 # 提示从测试集中选择10张图片取验证自动编码器的结果


# 网络参数
n_hidden_1 = 256 # 第一个隐藏层神经元个数(特征值格式)
n_hidden_2 = 128 # 第二个隐藏层神经元格式
n_input = 784 # 输入数据的特征个数  28*28=784

# 定义输入数据,无监督不需要标注数据,所以只有输入图片
X = tf.placeholder("float", [None, n_input])

#初始化每一层的权重和偏置
weights = {
    'encoder_h1': tf.Variable(tf.random_normal([n_input, n_hidden_1])),
    'encoder_h2': tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2])),
    'decoder_h1': tf.Variable(tf.random_normal([n_hidden_2, n_hidden_1])),
    'decoder_h2': tf.Variable(tf.random_normal([n_hidden_1, n_input])),
}
biases = {
    'encoder_b1': tf.Variable(tf.random_normal([n_hidden_1])),
    'encoder_b2': tf.Variable(tf.random_normal([n_hidden_2])),
    'decoder_b1': tf.Variable(tf.random_normal([n_hidden_1])),
    'decoder_b2': tf.Variable(tf.random_normal([n_input])),
}

#定义自动编码模型的网络结构,包括压缩和解压的过程

# 定义压缩函数
def encoder(x):
    # Encoder Hidden layer with sigmoid activation #1
    layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(x, weights['encoder_h1']),biases['encoder_b1']))
    # Decoder Hidden layer with sigmoid activation #2
    layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1, weights['encoder_h2']),biases['encoder_b2']))
    return layer_2


# 定义解压函数
def decoder(x):
    # Encoder Hidden layer with sigmoid activation #1
    layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(x, weights['decoder_h1']),biases['decoder_b1']))
    # Decoder Hidden layer with sigmoid activation #2
    layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1, weights['decoder_h2']),biases['decoder_b2']))
    return layer_2

# 建立模型
encoder_op = encoder(X)
decoder_op = decoder(encoder_op)

# 得出预测分类值
y_pred = decoder_op
# 得出真实值,即输入值
y_true = X

# 定义损失函数和优化器
cost = tf.reduce_mean(tf.pow(y_true - y_pred, 2))
optimizer = tf.train.RMSPropOptimizer(learning_rate).minimize(cost)

# 初始化变量
init = tf.global_variables_initializer()

# 3 训练数据及评估模型
with tf.Session() as sess:
    sess.run(init)
    total_batch = int(mnist.train.num_examples/batch_size)
    # 开始训练
    for epoch in range(training_epochs):
        # Loop over all batches
        for i in range(total_batch):
            batch_xs, batch_ys = mnist.train.next_batch(batch_size)
            # Run optimization op (backprop) and cost op (to get loss value)
            _, c = sess.run([optimizer, cost], feed_dict={X: batch_xs})
        # 每一轮,打印一次损失值
        if epoch % display_step == 0:
            print("Epoch:", '%04d' % (epoch+1),"cost=", "{:.9f}".format(c))
    print("Optimization Finished!")

    # 对测试集应用训练好的自动编码网络
    encode_decode = sess.run(
        y_pred, feed_dict={X: mnist.test.images[:examples_to_show]})
    # 比较测试集原始图片和自动编码网络的重建结果
    f, a = plt.subplots(2, 10, figsize=(10, 2))
    for i in range(examples_to_show):
        a[0][i].imshow(np.reshape(mnist.test.images[i], (28, 28)))
        a[1][i].imshow(np.reshape(encode_decode[i], (28, 28)))
    f.show()
    plt.draw()
    #plt.waitforbuttonpress()

人工智能实验---MNIST图像识别 完整代码 https://github.com/ChenMingK/MNIST-recognization MNIST数据集压缩包在里面,配好环境后运行CNN.py即可 实验环境 PyCharm, tensorflow(3.5), WIN10 推荐网址: http://www.tensorfly.cn/tfdoc/tutorials/mnist_pros.html  tensorflo... 阅读详情

相关推荐

从MNIST手写数字识别入门:深度学习数据集的基石与应用实战

在机器学习与计算机视觉领域,数据集是算法验证和模型训练的基石。一个高质量、标准化且广泛认可的数据集,能够帮助开发者将抽象算法与具体任务高效连接,并建立客观的性能基准。MNIST数据集作为经典的入门级图像数据集,以其结构清晰、规模适中的特点,成为了理解数据格式、模型架构和训练流程的绝佳起点。通过解析其二进制文件结构,开发者可以深入理解数据加载的本质;而利用TensorFlow、PyTorch等框架内置工具,则能快速进行工程实践。该数据集不仅是全连接神经网络和卷积神经网络的试炼场,也为联邦学习、生成对抗网络等前

423

【人工智能笔记】第二十九节 tensorflow 2.0 实现Facebook的无监督图像表示模型MoCo

作者提出动量对比度(MoCo)用于无监督的视觉表示学习。从作为字典查找的对比学习[29]的角度来看,作者构建了一个带有队列和移动平均编码器的动态字典。这样就可以动态地构建大型且一致的词典,从而促进对比性的无监督学习。MoCo在ImageNet分类的通用线性协议下提供了竞争性的结果。更重要的是,MoCo学习到的表示将转移到下游任务。 MoCo可以胜过在PASCAL VOC,COCO和其他数据集上进行监督的预训练对等任务中的7个检测/细分任务,有时会大大超过它。这表明,在许多视觉任务中,无监督和有监督的表征学习

不定时更新AI技术tensorflow实现方式,欢迎关注,有问题请私信我。 639

无监督学习的深度学习框架:TensorFlow与PyTorch

1.背景介绍 无监督学习是机器学习的一个重要分支,其主要特点是在训练过程中不使用标签信息来指导模型的学习。无监督学习算法通常用于处理结构不明确、无法直接提供标签信息的问题,如聚类、降维、特征提取等。随着深度学习技术的发展,无监督学习也开始广泛应用于深度学习领域。本文将介绍两种流行的深度学习框架:TensorFlow和PyTorch,以及它们在无监督学习

AI天才研究院 1336

(12-1)TensorFlow无监督学习实战:无监督学习的基本概念

在现实生活中常常会有遇到下面的的问题:(1)缺乏足够的先验知识,因此难以人工标注类别;(2)进行人工类别标注的成本太高。很自然地,我们希望计算机能代我们(部分)完成这些工作,或至少提供一些帮助。常见的应用背景包括:(1)一从庞大的样本集合中选出一些具有代表性的加以标注用于分类器的训练。(2)先将所有样本自动分为不同的类别,再由人类对这些类别进行标注。(3)在无类别信息情况下,寻找好的特征。在遇到上述问题时,人们很自然地希望计算机能代我们完成这些工作,或至少提供一些帮助。

码农三叔 900

[Python人工智能] 十五.无监督学习Autoencoder原理及聚类可视化案例详解

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前一篇文章详细讲解了循环神经网络LSTM RNN如何实现回归预测,通过sin曲线拟合实现如下图所示效果。本篇文章将分享无监督学习Autoencoder的原理知识,然后用MNIST手写数字案例进行对比实验及聚类分析,运行效果如下图所示。基础性文章,希望对您有所帮助!

杨秀璋的专栏 1万+

基于TensorFlow的MNIST手写数字识别项目实战

MNIST数据集是一个包含手写数字的大型数据库,广泛用于训练各类图像处理系统。它由60,000个训练样本和10,000个测试样本组成,每个样本都是28x28像素大小的灰度图。由于其多样性和广泛的使用,MNIST成为了机器学习和深度学习实验的”Hello World”。TensorFlow最初由Google大脑团队开发,是一个开源的机器学习库,它允许研究者和开发者构建和训练机器学习模型。自从2015年开源以来,TensorFlow因其强大的功能和灵活的设计,在工业界和学术界得到广泛应用。

weixin_30481539的博客 959

awesome-nlp金融科技:10个必备的金融文本分析和风险检测工具

在金融科技领域,自然语言处理(NLP)技术正发挥着越来越重要的作用。**awesome-nlp**作为精选的NLP资源库,汇集了大量适用于金融文本分析和风险检测的工具和框架。本文将为您介绍10个最实用的金融科技NLP工具,帮助您快速构建智能金融分析系统。 ## 为什么NLP对金融科技如此重要? 金融行业每天产生海量的文本数据,包括新闻、报告、合同、邮件等。通过**自然语言处理技术**,我们可以

gitblog_00014的博客 651

Python-无监督数据增强UDA的TensorFlow代码

无监督数据增强(UDA)的TensorFlow代码

吴裕雄 PYTHON 神经网络——TENSORFLOW 无监督学习处理MNIST手写数字数据集

# 导入模块 import numpy as np import tensorflow as tf import matplotlib.pyplot as plt # 加载数据 from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("...

weixin_30636089的博客 265

Hands-on-Unsupervised-Learning-with-TensorFlow-2.0:TensorFlow 2.0中无监督学习模型的实际演示

使用TensorFlow-2.0进行无监督学习 这是发布的的代码库。 它包含从头到尾完成视频课程所需的所有支持项目文件。 关于视频课程 如今,机器学习对企业变得越来越重要。 它用于使用监督和非监督算法来解决各种业务问题。 在无监督学习中,人工智能系统尝试根据数据之间存在的相似性和差异对未标记和未分类的数据进行分类。 在这种情况下,非监督学习方法基于数​​据生成模型的能力与监督学习的能力相比,有可能处理复杂且更困难的问题。 在本课程中,我们将研究不同的无监督学习方法,并使用TensorFlow平台解决实际问题。 使用TensorFlow解决现实世界中的问题的示例更具启发性和吸引力,并将提高您的实践技能。 在本课程结束时,您将在TensorFlow上使用无监督的学习算法获得大量的动手经验,并将能够创建自己的模型来解决实际的相关学习问题。 您将学到什么 无监督学习算法的基础及其重要性 Tenso

Python-Tensorflow中的半监督学习GAN

半监督学习生成对抗网络的Tensorflow实现

python-机器学习-手写数字识别

机器学习简单的来说,分为监督式学习和无监督式学习; 对于监督式学习就是需要人为的来告诉计算机这是什么,需要我们给他一个标签(答案)。 无监督式学习就是不需要我们给出标签(答案)。 图像识别(Image Recognition)是指利用计算机对图像进行处理、分析、计算以识别各种不同模式的目标和对像的技术。 手写数字识别是机器学习以及学习CNN的一个入门案例,计算机通过手写体写出来的数字来识别出图片中的字;但是与印刷字体不同的是,印刷体的字体规则整齐,而不同人的手写体风格迥异,大小不一, 造成了计算机对手写识别

qq_44936246的博客 2699

MySQL根据idb文件恢复数据

恢复前提 MySQL 5.* 和 8.* 的恢复方式大同小异,最基本的区别是8.* 中,不再有表结构frm文件,所以要恢复 8.* 的数据,就必须要有完整的建表语句。 而恢复 5.* 的数据,就需要idb文件和 frm文件,当然,如果有完整的建表语句的话,不用frm文件也行。 恢复步骤 需要注意的是,以下操作需要选定数据库后执行。 5.* 恢复表结构 确定表列数 首先创建一张 与需要恢复数据的表 的名字相同的新表,如果已知原表的字段数量的话,就按照原表字段数建表,字段名和类型都不用考虑,如果不知道数量的话,

weixin_45121446的博客 5447

tensorflow学习笔记(十二):K-means手写体数字(MNIST)识别

本文简单介绍了K--means的原理,然后介绍了用tensorflow搭建kmeans时使用到的主要函数,最后对手写体进行了分类。

ch18328071580的博客 7496

Ambari 3.0.0 + BigTop 3.3.0 源码编译与集群部署指南(Kylin V10 / aarch64)

仅仅是针对“应用商店目录(Applications Catalog)”的一个外围附属子模块(它不是 YARN 监控大盘,不影响 YARN UI 网页的主体使用),我们可以采用。自带的 Node 二进制是 x86_64 版本,在 ARM64(aarch64)容器上无法执行(Exit value: 126)。:Ambari Server/Agent 使用 JDK 17,BigTop 大数据组件(Hadoop/HBase/Spark 等)使用 JDK 8。,源码中包含 x86 特定的原生二进制文件。

amumu1992的博客 481

零中频接收机实战:DC Offset的5种常见解决方案与调试技巧

本文针对零中频接收机中DC Offset这一核心挑战,深入剖析了其产生机理与对信号解调的严重影响。文章从实战角度出发,系统性地介绍了五种解决方案,包括硬件预防、数字域校正、I/Q不平衡联合校正等,并分享了关键的实验室调试与产线测试技巧,旨在帮助射频工程师有效提升接收机性能。

weixin_29234509的博客 397

【深度学习】实现基于MNIST数据集的TensorFlow/Keras深度学习案例

深度学习是数据科学的一个方面,它推动了许多应用程序和服务,这些应用程序和服务可以提高自动化水平,无需人工干预即可执行分析和物理任务。本文简要介绍基于TensorFlow/Keras的深度学习案例,使用最流行的MNIST数据集。希望对读者有所帮助。

jackson_lingua的博客 2732

Qualcomm工具的使用

简介   由于我们公司主要是以高通平台为主,所以工具的使用是必不可少的,包括QPST、QRCT3、QXDM、QDART等。   高通工具顾名思义就是,对于高通平台的软件开发进行软件的烧录,软件的调试,软件的Log的抓取和分析过程,像我们平常用的大致就是烧版本、改NV、制作QCN、然后校准、强发强收等操作。 QPST   QPST主要是用来做一些参数的配置,包括EFS文件的编辑,QCN的导入和备份与...

Jimmy 2万+

mnist手写数字识别python_基于tensorflow的MNIST手写数字识别(二)--入门篇

一、本文的意义因为谷歌官方其实已经写了MNIST入门和深入两篇教程了,那我写这些文章又是为什么呢,只是抄袭?那倒并不是,更准确的说应该是笔记吧,然后用更通俗的语言来解释,并且补充更多,官方文章中没有详细展开的一些知识点,不过建议与官方文章结合着阅读。另外是代码部分的改动,官方的demo只提供了验证精确度,我将它改造成了能输入并预测输出结果的代码也就是说是一个从准备待测图片到最终是别的一个完整dem...

weixin_39630126的博客 239

即插即用篇 | 手把手教你 YOLOv11 添加注意力机制 | 适用于【检测任务】【分类任务】【分割任务】【关键点任务】| 20+ 种全打通!

即插即用篇 | 手把手教你 YOLOv11 添加注意力机制 | 适用于【检测任务】【分类任务】【分割任务】【关键点任务】| 20+ 种全打通!

Coding... 2831

Python编程基础05:运算符与表达式

文章目录一、算术运算符1、分类说明表2、注意事项3、案例演示任务1、计算成绩差与平均成绩课堂练习:编程处理带余除法。任务2、打印购物小票 运算符就是专门用于告诉程序执行特定运算或逻辑操作的符号。表达式是指由常量、变量和运算符组成的一个算式。编写程序对数据进行处理,其实处理就是对数据实施各种各样的运算,搞懂运算符与表达式是我们编写程序的基础性工作,本次讲课笔记通过案例讲解各种运算符的用法以及正确书写Python表达式的注意事项。 一、算术运算符 Python中的算术运算符就是用来处理四则运算的符号,也是

howard2005的专栏 3119

深度学习笔记(一)DNN-在mnist数据集上用tensorflow搭建dnn

深度学习笔记-DNN-tensorflow手写数字识别 本文代码运行的环境为: ubuntu 16.04 64 cuda=9.0 cudnn=7.0.5 tensorflow=1.9.0 python=3.6.4(anaconda 3.5.1) 本文包含的知识点有: DNN基本概念 DNN和多层感知机区别 神经网络层数到底怎么回事 Mnist数据集介绍 tensorflow定义网络结构...

天行健,君子以自强不息 2292

Python爬虫零基础入门【第九章:实战项目教学·第17节】内容指纹去重:URL 变体/重复正文的识别!

我长期专注 Python 爬虫工程化实战,主理专栏 👉 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 823

【亲测免费】 RBM-DBN-MNIST:基于MNIST的手写数字识别的深度信念网络实现

RBM-DBN-MNIST:基于MNIST的手写数字识别的深度信念网络实现 项目介绍 本项目[tjake/rbm-dbn-mnist](https://github.com/tjake/rbm-dbn-mnist.git)是一个利用深度信念网络(Deep Belief Network, DBN)在MNIST手写数字数据库上进行数字识别的开源实现。DBN是一种无监督学习的神经网络模型,由多个受限玻尔...

gitblog_00073的博客 844

PD3.0详解 第六章 协议层—数据消息之—VDM

PD3.0的VDM 很多对PD3.0协议了解不是很深入的同学可能对VDM有一些陌生,因为这个VDM是较为次要,只不过相对沟通电源的协议来讲VDM是次要,但从PD3.0协议的角度来说,这个也是非常重要的,是必须要非常明白的了解这个东西,所以今天大师匈就分享一下这部分的重要知识点。 VDM (vendor define message) VDM是什么意思呢,就是原厂定义的消息,比如PD快充芯片的原厂定义的一些自己独立的message。但是呢这部分也有规定的一些标准的字段。 另外我们要很清楚PD协议的数据分为几类

大师匈的博客 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

基于tensorflow的MNIST手写数字识别(二)--入门篇

http://www.jianshu.com/p/4195577585e6 基于tensorflow的MNIST手写字识别(一)--白话卷积神经网络模型 基于tensorflow的MNIST手写数字识别(二)--入门篇 基于tensorflow的MNIST手写数字识别(三)--神经网络篇 一、本文的意义          因为谷歌官方其实已经写了MNIST入门和深入两篇教程了,那我写这些文章...

weixin_33860722的博客 319

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: tensorflow模型转换成tensorflow lite模型
下一篇: 【应用数学与机器学习基础】
money_yuan
博客等级 码龄10年 104粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值