mnist 数据集的识别源码解析
在基本跑完识别代码后,再来谈一谈自己对代码的理解;
1 前向传播过程文件(mnist_forward.py)
第一个函数get_weight(shape, regularizer);
定义了w的初值和正则化损失加入losses中
第二个函数get_bias(shape):
对参数b进行设定
第三个函数forward(x, regularizer):
加入激活函数tf.nn.relu(tf.matmul(x, w1) + b1)
对输出y进行设定
此段代码在前面博客中讲过,比较简单,就不再过多叙述
2 反向传播过程文件(mnist_backward.py)
ce = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y, labels=tf.argmax(y_, 1))
在计算交叉熵之前,通常要用到softmax层来计算结果的概率分布。因为softmax层并不会改变最终的分类结果(排序),所以,tensorflow将softmax层与交叉熵函数进行封装,形成一个函数方便计算: tf.nn.softmax_cross_entropy_with_logits(logits= , labels=)。
为了加速计算过程,针对只有一个正确答案(例如MNIST识别)的分类问题
这里用到softmax()函数;可以参考我前面博文。地址: https://www.cnblogs.com/fcfc940503/p/10983906.html https://www.cnblogs.com/fcfc940503/p/10985129.html
读入数据
xs, ys = mnist.train.next_batch(BATCH_SIZE)
_, loss_value, step = sess.run([train_op, loss, global_step], feed_dict={x: xs, y_: ys}) 用 mnist.train.next_batch(BATCH_SIZE)随机从训练集中抽取BATCH_SIZE个样本输入神经网络;feed_dict={x: xs, y_: ys}喂入x和y_;
测试过程文件(mnist_test.py) 在测试过程中,导入了引入 time 模块、tensorflow、input_data、前向传播mnist_forward、反向传播 mnist_backward 模块和 os 模块,并规定程序 5 秒的循环间隔时间。
with tf.Graph().as_default() as g:
此函数利用tf.Graph()复现之前定义的计算图,就是将定义好的神将网络在计算图中复现
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
此函数是计算模型在测试集上的准确率;
其中
y 表示在一组数据(即 batch_size 个数据)上神经网络模型的预测结果,y 的形状为[batch_size,10],每一行表示一张图片的识别结果。通过tf.argmax()函数取出每张图片对应向量中最大值元素对应的索引值,组成长度为输入数据 batch_size 个的一维数组。通过 tf.equal()函数判断预测结果张量和实际标签张量的每个维度是否相等,若相等则返回 True,不 相等则返回 False。
通过 tf.cast() 函数将得到的布 尔 型 数 值 转 化 为 实 数 型 ,
再通过tf.reduce_mean()函数求平均值,最终得到神经网络模型在本组数据上的准确率
以上内容主要讲解mnist 数据集的识别源码中我认为不好理解或者还没理解的内容,主要目的是为了熟悉该代码的框架和相关内容。
以实例来增进知识的了解我认为更好吸收
转载于:https://www.cnblogs.com/fcfc940503/p/10985561.html
mnist 数据集的识别源码解析相关推荐
- 【深度学习模型】智云视图中文车牌识别源码解析(二)
[深度学习模型]智云视图中文车牌识别源码解析(二) 感受 HyperLPR可以识别多种中文车牌包括白牌,新能源车牌,使馆车牌,教练车牌,武警车牌等. 代码不可谓不混乱(别忘了这是职业公司的准产品级代码 ...
- 谷歌BERT预训练源码解析(三):训练过程
目录 前言 源码解析 主函数 自定义模型 遮蔽词预测 下一句预测 规范化数据集 前言 本部分介绍BERT训练过程,BERT模型训练过程是在自己的TPU上进行的,这部分我没做过研究所以不做深入探讨.BE ...
- dataset__getitem___PyTorch源码解析与实践(1):数据加载Dataset,Sampler与DataLoader
献给学习PyTorch在路上或者计划较深入理解PyTorch的同行者们 写在前面 笔者一直使用tf,大势所趋决定转PyTorch,这个系列就作为我学习PyTorch的笔记与心得. 网络上PyTorch ...
- weiler-atherton多边形裁剪算法_EAST算法超详细源码解析:数据预处理与标签生成...
作者简介 CW,广东深圳人,毕业于中山大学(SYSU)数据科学与计算机学院,毕业后就业于腾讯计算机系统有限公司技术工程与事业群(TEG)从事Devops工作,期间在AI LAB实习过,实操过道路交通元 ...
- EAST算法超详细源码解析:数据预处理与标签生成
作者简介 CW,广东深圳人,毕业于中山大学(SYSU)数据科学与计算机学院,毕业后就业于腾讯计算机系统有限公司技术工程与事业群(TEG)从事Devops工作,期间在AI LAB实习过,实操过道路交通元 ...
- 【卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10)】
卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10) 在上一章已经完成了卷积神经网络的结构分析,并通过各个模块理解 ...
- MySQL核心参数含义的源码解析
引言 你访问的网站,大部分使用Apache服务器;你访问的网站,大部分使用Linux或BSD操作系统:你访问的网站,大部分使用MySQL数据库;你提交DNS域名查询请求大多由BIND服务器分析处理;你 ...
- 视频教程-YOLOv3目标检测:原理与源码解析-计算机视觉
YOLOv3目标检测:原理与源码解析 大学教授,美国归国博士.博士生导师:人工智能公司专家顾问:长期从事人工智能.物联网.大数据研究:已发表学术论文100多篇,授权发明专利10多项 白勇 ¥78.00 ...
- openGauss数据库源码解析系列文章—— AI技术之“自调优”
上一篇介绍了第七章执行器解析中"7.6 向量化引擎"及"7.7 小结"的相关内容,本篇我们开启第八章 AI技术中"8.1 概述"及" ...
最新文章
- linux下怎么卸载ogg,OGG在Linux上的安装
- vs2005无法断点调试网站,断点失效
- linux文件目录类命令|--rmdir指令
- 已经无法合并还报请合并git_Git不能自动合并怎么解决?
- 金蝶kis专业版公网访问_金蝶KIS云专业版—【账务处理】进阶操作101问
- sentinel控制台无数据解决
- 浏览文件神器!且可以计算所有文件代码的行数!
- Linux初学者需了解的知识
- Linux内存管理 (3)内核内存的布局图
- pytorch入门——构建神经网络
- dorado7.x argument type mismatch
- 任正非:从未想干翻苹果|用友云SaaS产品“云直播”上市 |【软件网每日新闻播报│第9-28期】
- java-assured,如何使用Rest-Assured java中的证书进行HTTPS GET调用
- Meta今年不再招人!小扎还说跳槽越多越好
- 串口数据交换,实现串口合二为一
- 实习报告--实习内容及过程
- 二、基础SpringBoot2.0.0M4项目目录讲解
- 现代计算机基本工作原理,计算机基本原理
- win10显示无法连接远程计算机名,windows10无法连接远程桌面的问题的解决方法
- mysql 日期的数据类型,MySQL日期数据类型、MySQL时间类型使用总结
热门文章
- 在线教育开源 java_开源项目SpringBoot在线教育平台
- vue 动态路由_Vue.js应用性能优化三
- 处理通知栏点击操作_解读 | 企业主动披露申请 e操作来啦
- python2中的字符串编码注意事项
- tf.truncated_normal
- 获取当前绝对工作目录与被执行文件的绝对目录
- python创建线程_多种方法实现 python 线程池
- python对excel操作简书_Python实现EXCEL常用操作——pandas简介
- MongoDB简介与入门
- Redis事务中几种常见的场景-exec执行前后的语法错误时的处理