mxnet-Handwritten Digit Recognition程序理解
来源:互联网 发布:淘宝店铺微淘在那里看 编辑:程序博客网 时间:2024/05/17 06:36
train_mnist 的程序理解
读入图像和标签
经典的卷积神经网络在计算机视觉方面的应用:手写数字体的识别。数据库是灰度级为0-255大小为28*28的图片
此程序实现的是将图片以及对应的标签加载到numpy中。
下面输出前10张图片以及对应的标签
然后为深度学习开源库mxnet创建迭代器。迭代器在调用每个next()的时候都会返回一批数据,其中含有带有标签的图像,这些图像以4维矩阵的形式存储(batch_size, num_channels,width, height)的形式存储
加速数据处理的选项
最后的softmax层将输入映射成了概率
在定义了网络和迭代器以后就可以进行训练了。
Epoch 和 Batch的区别
http://www.cnblogs.com/diegodu/p/5683625.html
(1)batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;
(2)iteration:1个iteration等于使用batchsize个样本训练一次;
(3)epoch:1个epoch等于使用训练集中的全部样本训练一次;
举个例子,训练集有1000个样本,batchsize=10,那么:
训练完整个样本集需要:
100次iteration,1次epoch。
http://blog.csdn.net/qq_18515405/article/details/51821125
SGD批量随机梯度下降,一批数据进行前向传播,最后加权得到最后的损失函数,然后对权值进行调节,batchsize越大,所需要的内存也就越大,这个首先与硬件环境。
所有的数据完成一次前向传播和反向传播就是一个epoch。
参考
http://mxnet.io/tutorials/python/mnist.html
http://blog.csdn.net/Catalyst_ZX/article/details/53204234
这个是模型参数的设置以及训练的过程
classSpeedometer(__builtin__.object)
| Calculate and log training speed periodically.
定期计算和记录训练数据
batch_size始终是100,但是每200次会输出计算过程
python logging
http://blog.sina.com.cn/s/blog_4b5039210100f1wv.html
http://www.jb51.net/article/42626.htm
python提供了一个日志模块logging,它可以把我们想要的信息全部保存到一个日志文件中,方面我们查看
载入python中的日志模块,生成一个日志对象,设置日志级别为debug级别
Logger.setLevel(lvl)
设置logger的level, level有以下几个级别:
级别高低顺序:
Level order:NOTSET <DEBUG < INFO < WARNING < ERROR < CRITICAL
如果把looger的级别设置为INFO,那么小于INFO级别的日志都不输出,大于等于INFO级别的日志都输出
总的意思就是生成日志文件,在一次迭代中,batchsize的大小是100,每两次迭代输出计算过程,也就是实现这样的输出
model.fit所进行的是模型的训练
model.predict进行的是模型的预测
这个是在进行除操作之前进行了数据的转换,便于计算出准确率
numpy的一篇学习笔记
http://blog.chinaunix.net/uid-7596337-id-125813.html
用卷积层来表达空间相关性,RNN来表达时间连续性。
优秀的深度学习系统,或者说优秀的科学计算系统,重要的是编程接口的设计,它们都采用将一个领域的特定语言嵌入到一个主语言中,如numpy将矩阵运算嵌入到python中。这类嵌入一般分为两种,一种嵌入较浅,采用的是是命令式编程,每个语句按原来的意思执行,另一种嵌入的较深,采用声明式语言,提供一整套进行应用的迷你语言,也就是用户只需要进行声明,具体操作由系统来完成,比如caffe、TesorFlow
mxnet symbol模块
http://blog.csdn.net/qq_25491201/article/details/51277817
在mxnet中NDarray是一个基础的计算单元
mxnet采用的是符号编程
http://www.cnblogs.com/zhao441354231/p/6081055.html
定义了符号变量,输入数据是符号变量,输出也是符号变量,所以卷积层输出、激活层的数据输出类型也是符号变量
list_argument()属性可以用来检查计算图的原始的输入参数(不包含中间节点)
list_output()属性可以返回此Symbol的所有输出, 输出会在本层的name属性后自动加上_output
mxnet是将图计算与过程计算混合到了一起,比单纯的图计算的TesorFlow和单纯的过程计算的torch具有更大的灵活性
*args VS **kwargs
*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。并且同时使用*args和**kwargs时,必须*args参数列要在**kwargs前
http://www.cnblogs.com/fengmk2/archive/2008/04/21/1163766.html
mxnet.symbol.Symbol.infer_shape(self, *args, **kwargs): 推测输入参数和输出参数的shape, 返回一个list of tuple
便于知道网络输入的shape和输出的shape
sym是mxnet的为符号变量相关操作建立的一个库,网络输入数据定义为符号变量,定义网络用到symbol中的相关函数
http://blog.csdn.net/qq_25491201/article/details/51277817
每个标志都有一个对应的名字,不指定的话就按默认的名字
这个很棒啊,查看例程或者是自己创建的网络的输入输出参数很方便啊,特别是dict(zip())命令的应用使得输入输出参数的可视化更强。
pythonOS 模块
操作系统相关的调用和操作
os模块提供了一个统一的操作系统接口函数,接口函数由系统指定,可实现在不同的操作系统平台之间的切换。
有很多的python常用库
http://blog.chinaunix.net/uid-25508301-id-3352833.html
关于OS的详细的函数
http://www.cppblog.com/snowhill/articles/200826.html
http://www.jb51.net/article/57995.htm
http://www.cnblogs.com/kaituorensheng/archive/2013/03/18/2965766.html
几种网络架构的区别
http://www.open-open.com/lib/view/open1449232958202.html
urllib是一个获取url(UniformResource Locators,统一资源定址器)的模块
http://www.cnblogs.com/sysu-blackbear/p/3629420.html
gzip模块
gzip是压缩文件格式,一般后缀为.gz。在Linux上这种类型的压缩文件较常见。
matlab 中相关库的说明
http://www.2cto.com/kf/201404/295663.html
python中struct库的说明
python 网络编程、socket通信
在网络通信中大多数据的传递是以二进制流存在。
传递字符串的时候不用担心,但是在传递int、 char等基本数据的时候,就需要一种机制将数据结构打包为二进制流形式进行网络传输,然后在接收端再通过某种机制将数据解包成原始的数据结构。
python中的struct就提供了这样的模块,实现python基本类型值与用python字符串格式表示的Cstruct类型间的转化(Thismodule performs conversions between Python values and C structs represented asPython strings.)
http://www.cnblogs.com/coser/archive/2011/12/17/2291160.html
原文链接
http://mxnet.io/tutorials/python/mnist.html
- mxnet-Handwritten Digit Recognition程序理解
- Handwritten digit recognition with ANNs
- MXNet官方文档中文版教程(7):手写数字识别(Handwritten Digit Recognition)
- Atrainable feature extractor for handwritten digit recognition(经典文章阅读)
- Pattern Recognition For HandWritten with Semeion Data
- Digit Recognition via CNN
- Win10下搭建Mxnet并训练handwritten digits
- Simple Digit Recognition OCR in OpenCV-Python
- Caffe-Based Digit Recognition in Kaggle
- kaggle-Digit Recognition(手写数字识别)
- KNN算法Hadoop实现及kaggle digit recognition数据测试
- 利用Caffe+Python实现Kaggle上Digit Recognition练手项目
- Handbook of Face recognition 理解
- mxnet
- MXNet
- MXNet
- MXNet
- 关于Mxnet的一些基础知识理解(1)
- 服装BI企业用不好的原因剖析
- js 时间与时间戳的转换
- 剑指offer:数组中只出现一次的数字
- Linux TCP/IP networking: net-tools vs. iproute2
- Android防止Service被杀死
- mxnet-Handwritten Digit Recognition程序理解
- oracle PROCEDURE
- 爬取购物网页商品
- 蓝桥杯最小公倍数
- cocos2dx-lua开发环境搭建及Cocos2d-JS环境配置教程windows打包apk同样在mac环境也一样打包ios的ipk
- js 毫秒数转换为指定格式日期的js代码
- javascript select标签的操作
- PCA——主成分分析
- LUC网页设置