解析Tensorflow之MNIST的使用_python

来源:脚本之家  责任编辑:小易  

这个问题分解成几块来看就简单了棒ab产生电压变压器升压R1,R2分配电压(分析电路图,F不变,电压表度数V不变)电容M/N间的电压是就是R2两端电压U1=U*R2/(R1+R2)关键是简化分解问题,画等效电路图www.zgxue.com防采集请勿采集本网。

要说2017年什么技术最火爆,无疑是google领衔的深度学习开源框架Tensorflow。本文简述一下深度学习的入门例子MNIST。

如果你能找到最贴近真实情况的数据,不用机器学习也可以预测房价,预测房价最难的是数据不可靠。

深度学习简单介绍

因为根据图像,两点间所收的力都是正值,可以理解为受力方向相同。而只有电荷在mn中间才满足受力方向相同

首先要简单区别几个概念:人工智能,机器学习,深度学习,神经网络。这几个词应该是出现的最为频繁的,但是他们有什么区别呢?

45,40Mn,经调质后综合力学性能良好,用于受力较大的机械零件,如齿轮、连杆、机床主轴等;60、65Mn钢具有较高的强度;用于制造各种弹簧、机车轮缘、低速车轮. 3.碳素工具钢 牌号:例如T12钢表示Wc=1.2%的

人工智能:人类通过直觉可以解决的问题,如:自然语言理解,图像识别,语音识别等,计算机很难解决,而人工智能就是要解决这类问题。

已知M、N在水平向右匀强电场中均受到电场力和互相的静电力,因为若M、N带不等量电荷,不可能会受力平衡,若M、N带同种电荷,则两者相互排斥,所受电场力方向相同,静电力方向相反。那么M、N其中

机器学习:如果一个任务可以在任务T上,随着经验E的增加,效果P也随之增加,那么就认为这个程序可以从经验中学习。

y=(m-2)x的3-|m|次方+2n-5的正比例函数,则x的指数(3-|m|)等于1,而且比例系数(m-2)不能等于0,2n-5等于0 把m=-2,n=5/2代入y=(m-2)x的3-|m|次方+2n-5可得函数的解析式为:y=-4x

深度学习:其核心就是自动将简单的特征组合成更加复杂的特征,并用这些特征解决问题。

神经网络:最初是一个生物学的概念,一般是指大脑神经元,触点,细胞等组成的网络,用于产生意识,帮助生物思考和行动,后来人工智能受神经网络的启发,发展出了人工神经网络。

来一张图就比较清楚了,如下图:

MNIST解析

MNIST是深度学习的经典入门demo,他是由6万张训练图片和1万张测试图片构成的,每张图片都是28*28大小(如下图),而且都是黑白色构成(这里的黑色是一个0-1的浮点数,黑色越深表示数值越靠近1),这些图片是采集的不同的人手写从0到9的数字。TensorFlow将这个数据集和相关操作封装到了库中,下面我们来一步步解读深度学习MNIST的过程。

上图就是4张MNIST图片。这些图片并不是传统意义上.jpg或者jpg格式的图片,因.jpg或者jpg的图片格式,会带有很多干扰信息(如:数据块,图片头,图片尾,长度等等),这些图片会被处理成很简易的二维数组,如图:

可以看到,矩阵中有值的地方构成的图形,跟左边的图形很相似。之所以这样做,是为了让模型更简单清晰。特征更明显。

我们先看模型的代码以及如何训练模型:

mnist = input_data.read_data_sets(FLAGS.data_dir, one_hot=True)# x是特征值 x = tf.placeholder(tf.float32, [None, 784])# w表示每一个特征值(像素点)会影响结果的权重 W = tf.Variable(tf.zeros([784, 10])) b = tf.Variable(tf.zeros([10])) y = tf.matmul(x, W) + b# 是图片实际对应的值 y_ = tf.placeholder(tf.float32, [None, 10])<br> cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y)) train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) sess = tf.InteractiveSession() tf.global_variables_initializer().run() # mnist.train 训练数据 for _ in range(1000): batch_xs, batch_ys = mnist.train.next_batch(100) sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) #取得y得最大概率对应的数组索引来和y_的数组索引对比,如果索引相同,则表示预测正确 correct_prediction = tf.equal(tf.arg_max(y, 1), tf.arg_max(y_, 1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))

首先第一行是获取MNIST的数据集,我们逐一解释一下:

x(图片的特征值):这里使用了一个28*28=784列的数据来表示一个图片的构成,也就是说,每一个点都是这个图片的一个特征,这个其实比较好理解,因为每一个点都会对图片的样子和表达的含义有影响,只是影响的大小不同而已。至于为什么要将28*28的矩阵摊平成为一个1行784列的一维数组,我猜测可能是因为这样做会更加简单直观。

W(特征值对应的权重):这个值很重要,因为我们深度学习的过程,就是发现特征,经过一系列训练,从而得出每一个特征对结果影响的权重,我们训练,就是为了得到这个最佳权重值。

b(偏置量):是为了去线性话(我不是太清楚为什么需要这个值)

y(预测的结果):单个样本被预测出来是哪个数字的概率,比如:有可能结果是[ 1.07476616 -4.54194021 2.98073649 -7.42985344 3.29253793 1.967506178.59438515 -6.65950203 1.68721473 -0.9658531 ],则分别表示是0,1,2,3,4,5,6,7,8,9的概率,然后会取一个最大值来作为本次预测的结果,对于这个数组来说,结果是6(8.59438515)

y_(真实结果):来自MNIST的训练集,每一个图片所对应的真实值,如果是6,则表示为:[0 0 0 0 0 1 0 0 0]

再下面两行代码是损失函数(交叉熵)和梯度下降算法,通过不断的调整权重和偏置量的值,来逐步减小根据计算的预测结果和提供的真实结果之间的差异,以达到训练模型的目的。

算法确定以后便可以开始训练模型了,如下:

for _ in range(1000): batch_xs, batch_ys = mnist.train.next_batch(100) sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

mnist.train.next_batch(100)是从训练集里一次提取100张图片数据来训练,然后循环1000次,以达到训练的目的。

之后的两行代码都有注释,不再累述。我们看最后一行代码:

print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))

mnist.test.images和mnist.test.labels是测试集,用来测试。accuracy是预测准确率。

当代码运行起来以后,我们发现,准确率大概在92%左右浮动。这个时候我们可能想看看到底是什么样的图片让预测不准。则添加如下代码:

for i in range(0, len(mnist.test.images)): result = sess.run(correct_prediction, feed_dict={x: np.array([mnist.test.images[i]]), y_: np.array([mnist.test.labels[i]])}) if not result: print('预测的值是:',sess.run(y, feed_dict={x: np.array([mnist.test.images[i]]), y_: np.array([mnist.test.labels[i]])})) print('实际的值是:',sess.run(y_,feed_dict={x: np.array([mnist.test.images[i]]), y_: np.array([mnist.test.labels[i]])})) one_pic_arr = np.reshape(mnist.test.images[i], (28, 28)) pic_matrix = np.matrix(one_pic_arr, dtype="float") plt.imshow(pic_matrix) pylab.show() break print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))

for循环内指明一旦result为false,就表示出现了预测值和实际值不符合的图片,然后我们把值和图片分别打印出来看看:

预测的值是: [[ 1.82234347 -4.87242508 2.63052988 -6.56350136 2.73666072 2.30682945 8.59051228 -7.20512581 1.45552373 -0.90134078]]

对应的是数字6。

实际的值是: [[ 0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]]

对应的是数字5。

我们再来看看图片是什么样子的:

的确像5又像6。

总体来说,只有92%的准确率,还是比较低的,后续会解析一下比较适合识别图片的卷积神经网络,准确率可以达到99%以上。

一些体会与感想

我本人是一名iOS开发,也是迎着人工智能的浪潮开始一路学习,我觉得人工智能终将改变我们的生活,也会成为未来的一个热门学科。这一个多月的自学下来,我觉得最为困难的是克服自己的畏难情绪,因为我完全没有AI方面的任何经验,而且工作年限太久,线性代数,概率论等知识早已还给老师,所以在开始的时候,总是反反复复不停犹豫,纠结到底要不要把时间花费在研究深度学习上面。但是后来一想,假如我不学AI的东西,若干年后,AI发展越发成熟,到时候想学也会难以跟上步伐,而且,让电脑学会思考这本身就是一件很让人兴奋的事情,既然想学,有什么理由不去学呢?与大家共勉。

参考文章:

https://zhuanlan.zhihu.com/p/25482889

https://hit-scir.gitbooks.io/neural-networks-and-deep-learning-zh_cn/content/chap1/c1s0.html

到此这篇关于解析Tensorflow之MNIST的使用的文章就介绍到这了,更多相关Tensorflow MNIST内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

Ubuntu安装tensorflow先安装python-dev,再安装tensorflow就好了sudo apt-get install python-devpip install内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • tensorflow实现加载mnist数据集
  • tensorflow学习笔记之mnist的卷积神经网络实例
  • tensorflow实现knn识别mnist
  • tensorflow实现softma识别mnist
  • tensorflow使用神经网络实现mnist分类
  • tensorflow训练mnist手写数字识别模型
  • tensorflow mnist 数据加载实现并画图效果
  • tensorflow mnist手写数据集的实现方法
  • 使用tensorflow直接获取处理mnist数据方式
  • 使用tensorflow实现vgg网络,训练mnist数据集方式
  • 基于tensorflow的cnn实现mnist手写数字识别
  • 基于tensorflow的mnist手写数字识别分类
  • python向已存在的excel中新增表,不覆盖原数据的实例
  • python基于opencv来快速实现人脸识别过程详解(完整版)
  • python 使用matplotlib模块模拟掷骰子
  • 余弦相似性计算及python代码实现过程解析
  • python-opencv实现红绿两色识别操作
  • 举例讲解python设计模式编程中的访问者与观察者模式
  • 使用django的模版来配合字符串翻译工作
  • python实现绘制树枝简单示例
  • 在django的模型中执行原始sql查询的方法
  • 遗传算法python版
  • tensor flow 用什么方式安装好
  • 帮我解析MN两极电压是这样求的原因
  • 指数是2,最后是求mn的值,要解析就采纳
  • 设函数f(n)的定义域为N*,且f(1)=1,f(m+n)=f(m)+f(n)+mn 。求f(n)的解析式。
  • 如何利用机器学习最火的tensor flow架构预测房价
  • 物理为什么解析上说q是负电荷,且位于mn之间?
  • 说明q235a 10 45 65mn t8 t12a各属什么钢 分析其碳含量技巧
  • 这道高中物理题解析B选项为什么MN两点的正负这样判断。
  • 5是正比例函数,求mn的值及函数的解析
  • 理论力学 空间任意力系的简化 为什么F1 F2 FN移动到o点后M1M2MN这样画 那位大哥解析下
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全vbsdos/bathtahtcpythonperl游戏相关vba远程脚本coldfusionruby专题autoitseraphzonepowershelllinux shellluagolangerlang其它首页tensorflow实现加载mnist数据集tensorflow学习笔记之mnist的卷积神经网络实例tensorflow实现knn识别mnisttensorflow实现softma识别mnisttensorflow使用神经网络实现mnist分类tensorflow训练mnist手写数字识别模型tensorflow mnist 数据加载实现并画图效果tensorflow mnist手写数据集的实现方法使用tensorflow直接获取处理mnist数据方式使用tensorflow实现vgg网络,训练mnist数据集方式基于tensorflow的cnn实现mnist手写数字识别基于tensorflow的mnist手写数字识别分类python向已存在的excel中新增表,不覆盖原数据的实例python基于opencv来快速实现人脸识别过程详解(完整版)python 使用matplotlib模块模拟掷骰子余弦相似性计算及python代码实现过程解析python-opencv实现红绿两色识别操作举例讲解python设计模式编程中的访问者与观察者模式使用django的模版来配合字符串翻译工作python实现绘制树枝简单示例在django的模型中执行原始sql查询的方法遗传算法python版python入门教程 超详细1小时学会python 列表(list)操作方法详解python 元组(tuple)操作详解python 字典(dictionary)操作详解pycharm 使用心得(一)安装和首python strip()函数 介绍pycharm 2020最新永久激活码(附python 中文乱码问题深入分析python中使用xlrd、xlwt操作excepython科学计算环境推荐——anacpython tkinter界面居中显示的方法python使用excel将数据写入多个sheet解决pycharm debug时界面下方不出现step等python画图把时间作为横坐标的方法详解如何将python3.6软件的py文件打包成epython迭代器和生成器介绍pytorch 使用加载训练好的模型做inferencpython实践项目之监控当前联网状态详情python实现读取txt文件并转换为excel的方python中matplotlib实现绘制3d图的示例代
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved