Tensorflow卷积神经网络实现MNIST手写数据集识别

基于TensorFlow卷积神经网络与MNIST数据集设计手写数字识别算法 TensorFlow是一个基于Python和基于数据流编程的机器学习框架,而MNIST是一个经典的计算机视觉数据集,本文是基于TensorFlow卷积神经网络与MNIST数据集设计手写数字识别算法。 阅读详情

模型建的不好,最终只有85%左右的准确率,后面继续改进吧

 

#卷积神经网络API
    卷积层:tf.nn.conv2d(input,    #输入张量,具有[batch, height, width, channel]
                filter,    #过滤器大小[filter_height, filter_width, in_channels,out_channels]
                strides,#步长,一般为1
                padding    #SAME VALID,same为填充0,输出结论与输入结论的长宽一样
                )

    池化层:tf.nn.max_pool(value,    #[batch, height, width,channels]
                ksize,    #池化窗口大小
                strides,    #步长大小
                padding    #填充类型,SAME or VALID
                )

#卷积神经网络识别mnist
import tensorflow as tf
import os
from tensorflow.examples.tutorials.mnist import input_data


def init_weight(shape):
    """
    初始化权重参数
    """
    w = tf.Variable(tf.random_normal(shape = shape, mean=0.0, stddev=1.0))
    return w

def init_bias(shape):
    """
    初始化偏置参数
    """
    b = tf.Variable(tf.random_normal(shape = shape, mean=0.0, stddev=1.0))
    return b


def modol():
    """
    卷积神经网络模型
    """
    # 1、准备数据占位符 x[None, 784], y[None, 10]
    with tf.variable_scope("Input_data"):
        x = tf.placeholder(tf.float32, [None, 784])
        y_true = tf.placeholder(tf.int32, [None, 10])

    # 2、卷积层1
    with tf.variable_scope("Conv1"):

        # 随机初始化参数
        w1 = init_weight([5,5,1,32])
        b1 = init_bias([32])


        # 改变x从[None,784] -> [None,28, 28, 1]
        x_reshape = tf.reshape(x, [-1, 28, 28, 1])
        
        # 进行卷积操作,x_relu[None,28,28,32]
        x1_relu = tf.nn.relu(tf.nn.conv2d(x_reshape, w1, strides = [1,1,1,1], padding="SAME") + b1)

        #池化层
        x1_pool = tf.nn.max_pool(x1_relu, ksize=[1,2,2,1], strides = [1,2,2,1], padding="SAME")

    # 3、卷积层2:输入为:[None,14,14,32]
        # 随机初始化参数
        w2 = init_weight([5,5,32,64])
        b2 = init_bias([64])

        # 进行卷积操作,x_relu[None,14,14,64]
        x2_relu = tf.nn.relu(tf.nn.conv2d(x1_pool, w2, strides = [1,1,1,1], padding="SAME") + b2)

        #池化层[None,14,14,64] -> [None,7,7,64]
        x2_pool = tf.nn.max_pool(x2_relu, ksize=[1,2,2,1], strides = [1,2,2,1], padding="SAME")


    # 4、全连接层,输入为[None,7,7,64] * [7*7*64,10] = [None,10]

        #随机初始化权重和偏置
        w_fc = init_weight([7*7*64,10])
        b_fc = init_bias([10])

        #修改矩阵大小[None,7,7,64] -> [None,7*7*64]
        fc_reshape = tf.reshape(x2_pool, [-1,7*7*64])

        #进行矩阵运算[None, 10]
        y_predict = tf.matmul(fc_reshape, w_fc) + b_fc
    return x, y_true, y_predict


def conv_fc():
    
    mnist = input_data.read_data_sets("./mnist/input_data/", one_hot=True)
    x, y_true, y_predict = modol()

    #计算交叉熵损失
    with tf.variable_scope("soft_cross"):
        loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels = y_true, logits = y_predict))

    with tf.variable_scope("opitmizer"):
        train_op = tf.train.GradientDescentOptimizer(0.0001).minimize(loss)
            
    with tf.variable_scope("accuracy"):
        equal_list = tf.equal(tf.argmax(y_true, 1), tf.argmax(y_predict,1))
        accuracy = tf.reduce_mean(tf.cast(equal_list, tf.float32))

    init_op = tf.global_variables_initializer()
    print("asd")

    with tf.Session() as sess:

        sess.run(init_op)

        #循环训练
        for i in range(5000):
            # API获取一个训练batch
            mnixt_x, mnist_y = mnist.train.next_batch(50)

            # 运行op训练
            sess.run(train_op, feed_dict = {x: mnixt_x, y_true: mnist_y})
            print("after %d times of trainings, accuracy is %f" % 
                    (i, sess.run(accuracy, feed_dict = {x: mnixt_x, y_true: mnist_y})))

    return None


if __name__ == '__main__':
    conv_fc()


 

基于tensorflow框架对MNIST数据集手写识别卷积神经网络的实现 0.MNIST数据集介绍:MNIST数据集是由10000张28*28*1手写数字图片所构成的数据集,MNIST 数据集来自美国国家标准与技术研究所, National Institute of Standards and Technology (NIST). 训练集 (trainingset) 由来自 250 个不同人手写的数字构成, 其中 50% 是高中学生, 50% 来自人口普查局 (the ... 阅读详情

相关推荐

Tensorflow基于卷积神经网络(CNN)的手写数字识别

一、简介 本项目在Tensorflow平台下利用卷积神经网络(CNN)实现了对mnist数据集(28*28)的手写数字图片的识别,通过5000*50个样本训练后,对500个样本进行测试,准确率可以达到95%左右。本文完整代码:https://github.com/iapcoder/cnnMnistRecognition。 二、mnist数据集简介 MNIST(Mixed National I...

wangTongGen 8991

利用Tensorflow建立简单卷积神经网络进行手写数字识别

建立一个简单的CNN进行手写数字识别,使用的数据集是MNIST数据集 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets('MNIST_data/', one_hot=True) sess = tf.Int...

BigDream123的博客 745

Tensorflow学习:卷积神经网络CNN应用于手写数字识别(MNIST数据集分类)

Tensorflow学习:卷积神经网络应用于手写数字识别(MNIST数据集分类) import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # 载入数据集 mnist = input_data.read_data_sets("MNST_data", one_hot=True) # 每个批次的大小:一次性向神经网络中放入100张图片进行训练:以矩阵的形式放进去 batch_size = 100 #

cui1004的博客 1367

深度学习-卷积神经网络-实例及代码2(初级)—利用Tensorflow和mnist数据集训练简单的深度网络模型实现手写数字识别

系列文章: 深度学习-卷积神经网络-实例及代码0.8—基于最小均方误差的线性判别函数参数拟合训练 深度学习-卷积神经网络-实例及代码0.9—MNIST数据集介绍、下载及基本操作 深度学习-卷积神经网络-实例及代码1(入门)—利用Tensorflow和mnist数据集训练单层前馈神经网络/感知机实现手写数字识别 1、基础知识准备 (1)深度学习-卷积神经网络的基本原理 卷积层:卷积操作的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网路能从低.

firemonkeycs的专栏 1297

基于TensorFlow的手写体数字识别

目录 一、MNIST数据集介绍 二、原理 2.1、卷积神经网络简介(convolutional neural network 简称CNN) 2.1.1卷积运算过程 2.1.2滑动的步长 2.1.3卷积的边界处理 2.1.4池化 2.1.5全连接 2.1.6卷积核相关:梯度下降 2.2LeNet-5模型的介绍 2.3手写数字识别算法模型的构建 2.3.1各层设计 2.3....

yf_0707的博客 5571

用TensorFlow构造CNN进行手写数字识别

在前两篇文章中,分别用Softmax回归和普通的3层神经网络在MNIST上进行了手写数字的识别。这两种方法都是将图片转换成一维的数组进行处理,没有考虑图片的二维结构信息,所以准确率都还不够高。在这篇文章中,我们将用提取了图片二维结构信息的卷积神经网络(Convolutional Neural Network, CNN)来进行手写数字的识别。 普通的神经网络是Fully Connected N

clcwcxfwf的专栏 1万+

使用Tensorflow和MNIST识别自己手写的数字

最近在学习神经网络相关的东西,发现有很多资料是Tensorflow教程上的内容,但是教程很多只是一个验证官方程序的过程。如何将官方程序变成自己可以利用的程序,网上似乎资料比较少,所以我就来介绍一下如何使用Tensorflow和MNIST搭建自己的手写识别算法,识别自己写的数字。

鸡蛋灌饼小菜鸟的博客 6万+

人工智能实验---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...

雲的博客 1万+

TensorFlow——CNN实现MNIST手写体识别

文章目录TensorFlowCNN实现MNIST1,数据集2,回归模型——Softmax3,CNN4,具体实现以及相关函数 TensorFlowCNN实现MNIST 官方文档 —— MNIST 入门 | Softmax 相关 官方文档 —— MNIST 进阶 | CNN 相关 1,数据集 这份Python代码是官方网站上提供给我们下载和安装数据集的,然后可以使用下面的代码导入到你的项目里面: i...

还是应该要努力的(12点前睡觉!!!!! 3342

基于Python卷积神经网络(CNN)实现手写数字识别

项目简介该项目旨在利用卷积神经网络(CNN)对手写数字图像进行分类,即识别图像中显示的0-9之间的数字。MNIST是一个包含大量手写数字图像和对应标签的数据集,是这一任务的常用基准数据集。项目步骤数据准备:下载并加载MNIST数据集。通常,这个数据集会被分成训练集和测试集两部分。对数据进行预处理,如归一化、调整尺寸等,以便输入到神经网络中。构建CNN模型:设计一个卷积神经网络结构。

qq1744828575的博客 1748

Windows下Python调用D435i相机避坑指南:从SDK版本选择到RealSense Viewer报错解决

本文详细介绍了在Windows环境下使用Python调用Intel D435i相机的完整避坑指南。重点解决了SDK版本选择问题,推荐使用稳定的Intel RealSense SDK 2.54.2版本,并提供了从环境配置、常见报错解决到实际应用案例的全流程实践指导,帮助开发者高效完成相机部署与开发。

palm99的专栏 923

Pycharm+TensorFlow编写CNN实现Mnist手写数据集识别

# 导入本次需要的模块 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # 下载并加载数据 mnist = input_data.read_data_sets(r'F:\手写数字识别\新建文件夹\data', one_hot=True) def compute_accuracy...

AIGC Studio:分享AIGC前沿知识和好玩应用,公众号同名。 5372

海康视觉平台VisionMaster使用学习笔记(1)

双击图像源设置图像源的属性,像素格式分为Mono8和RDB24分别对应导入的图像是彩色还是黑白。打开相机驱动软件MVS,对连接的相机进行属性上的配置,先对相机的IP进行对应的设置。将自动触发的使能打开,保存配置好的相机属性,默认保存到用户集1中。点击MVS软件中的触发按钮,查看相机是否进行正常的触发拍照。打开VM软件添加一个图像源,选择图像源选项拖出图像源。回到VM软件中将选择相机选项选择到配置好参数的相机。取图方式也可以调整为相机取图,将图像源改为相机。双击相机进行连接后对相机的属性进行配置。

A567852的博客 1万+

TensorFlow实战笔记之(4):卷积神经网络(CNN) 实现手写数字识别

一、引言 前一篇博文使用单隐层的全连接神经网络,并结合一些神经网络的优化策略,如指数衰减学习率、正则化、Relu激活函数和Adam优化算法等,用包含100个隐层神经元的神经网络实现了MNIST数据集上手写数字识别98%的准确率。但是全连接神经网络也是有局限的,即使使用很深的网络、很多的隐层结点、很大的迭代轮数,也很难在MNIST数据集上得到99%以上的准确率。不过,卷积神经网络的出现解决了这一问...

polyhedronx的博客 6517

Navcat最新版的激活和安装教程(全网最靠谱,最快捷的方式)

现在最新版本navcat已经出到了16.3了,并且新版navcat也支持连接redis和图标等更多样化的功能,但是比较头疼的一件事就是,只能试用14天。那么接下来小编教大家如何用最简单的方式使用最新版navcat16.

weixin_50737119的博客 2万+

数学建模灵敏性分析(一阶、二阶灵敏度)python代码+懒人专用版

对于勉强看懂了灵敏度分析的同学来说,本文给出一个方便移植、修改的python程序,可以很方便地进行灵敏度分析。

春江花朝秋月夜 1万+

Tensorflow(2):MNIST识别自己手写的数字--进阶篇(CNN)

   本文利用卷积神经网络(CNN)实现自己手写的数字识别。CNN的代码参考自Tensorflow中文社区官方教程【Minst进阶】 1.卷积神经网络简介   卷积神经网络是一种多层神经网络,擅长处理图像特别是大图像的相关机器学习问题。   卷积网络通过一系列方法,将数据量庞大的图像识别问题不断降维,最终使其能够被训练。CNN最早由Yann LeCun提出并应用在手写字体识别上(MINS...

雨寒sgg的博客 8435

机器人控制基础:电机编码器常见类型

电机编码器是测量电机位置、速度和方向的传感器,主要分为光电、磁性和旋转变压器三类。光电编码器精度高但需防尘,适用于伺服系统;磁性编码器耐环境性强,常用于汽车电机;旋转变压器适应极端环境,多用于军工领域。按信号类型可分为增量式(成本低)和绝对式(断电保留位置)。选型需综合考虑精度、环境适应性及成本。

start_up_go的博客 475

深度学习-卷积神经网络-实例及代码3(图像分类LeNet5模型)—利用Tensorflow和mnist数据集训练LeNet5-CNN模型实现手写数字识别

系列文章: 深度学习-卷积神经网络-实例及代码0.8—基于最小均方误差的线性判别函数参数拟合训练 深度学习-卷积神经网络-实例及代码0.9—MNIST数据集介绍、下载及基本操作 深度学习-卷积神经网络-实例及代码1(入门)—利用Tensorflow和mnist数据集训练单层前馈神经网络/感知机实现手写数字识别 深度学习-卷积神经网络-实例及代码2(初级)—利用Tensorflow和mnist数据集训练简单的深度网络模型实现手写数字识别 论文Lecun-1998和其中提出的LeNet5模型是深.

firemonkeycs的专栏 1663

Android功耗系列专题理论之六:外设功耗问题分析方法

本文介绍了移动设备功耗问题的分析方法,重点针对传感器和GPU两大模块。传感器部分详细讲解了通过ADB命令获取日志、状态差异分析和单传感器隔离测试的排查方法,并给出优化建议。GPU部分从基础功耗测量、场景测试到功能模块拆解进行多维度分析。同时阐述了GNSS/GPS功耗的测试方法,包括前后台对比、星座双频拆解及SAP/DPO等特殊功能的电流分析,为移动设备功耗优化提供系统性的诊断思路。

369

【异常】OpenClaw LLM请求超时故障全链路排查与解决方案 LLM request timed out. 网络连接超时了

摘要: OpenClaw LLM请求超时故障是高频网络交互问题,表现为客户端在预设时间内未收到服务端响应。根因分为四类:客户端配置缺陷(如超时阈值不合理)、网络链路异常(防火墙拦截等)、服务端问题(限流/宕机)及硬件瓶颈(算力不足)。解决方案分三步: 通用排查:检查网络连通性、关闭防火墙/代理校验,调整超时阈值至60-300秒; 分场景修复:云端API需核对密钥/限流规则,本地部署需验证服务状态与硬件资源; 兜底方案:重启程序、更新版本或更换服务端点,结合日志精准定位。修复后不影响OpenClaw数据完整性

奶爸的编程之路,也就一周冷个三天 2058

TensorFlow搭建CNN卷积神经网络

TensorFlow搭建CNN卷积神经网络 该教程采用TernsorFlow搭建CNN卷积神经网络,并利用MNIST数据集进行数字的手写识别

段星星的博客 4891

Sigrity Power Tree如何进行直流压降仿真分析操作指导

Sigrity Power Tree模式可以用于前仿真,在没有layout文件的情况下对电源进行直流压降仿真分析,用于评估原理图设计以及器件选型是否合理。Model:设置为Equal Current,设置为等电源模型,意思该负载每个电源pin都是等电流的。Current:设置每个负载的电流,U30为3A,U3-U6各为1A。Nominal Current:设置能够承载的最大电流,设置为10A。Upper/ Lower Tol:设置为压降范围为5%Output Current:设置输出电流为10A。

weixin_54787054的博客 730

导入mnist数据集

下载一个代码后,发现需要导入mnist数据集,首先新建一个py的文件,把代码复制过来,然后记得一定要改成这样的格式: from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets('MNIST_data', one_hot=True) 这代表:read_data_sets(...

张齐贤的博客 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

用TensorFlow通过手写数字识别实例实现CNN

文章目录前提介绍CNN结构输入层卷积层池化层全连接层实现定义输入输出输入层卷积层1池化层1卷积层2&池化层2flat(平坦化)全连接层dropout层输出层损失训练准确率图初始化数据流动 前提介绍 本文通过TensorFlow利用Mnist数据集来实现CNN,因为大名鼎鼎的Mnist被收录在了TensorFlow中,所以我们只需要直接调用就可以使用该数据集了。 from tensorflow.examples.tutorials.mnist import input_data mnist=input

weixin_43800002的博客 757

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

详解 Pytorch 实现 MNIST

MNIST虽然很简单,但是值得我们学习的东西还是有很多的。 项目虽然简单,但是个人建议还是将各个模块分开创建,特别是对于新人而言,模块化的创建会让读者更加清晰、易懂。 CNN模块:卷积神经网络的组成; train模块:利用CNN模型 对 MNIST数据集 进行训练并保存模型 test模块:加载训练好的模型对测试集数据进行测试 cnn.pt : train 的CNN模型 注意! 有GPU的小伙伴尽量使用GPU训练,GPU的训练速度比CPU的训练速度高许多倍,可以节约大量训练时间 CNN 模块 MN

绿色羽毛 1万+

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

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

上一篇: Python学习笔记:文件操作、类基础、派生与继承入门
下一篇: Python:学生信息管理系统(附下载链接)
WilliamCode
博客等级 码龄11年 118粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值