ImageVerifierCode 换一换
格式:DOCX , 页数:7 ,大小:236.37KB ,
资源ID:5721648      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5721648.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(手写数字识别mxnet官网例子.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

手写数字识别mxnet官网例子.docx

1、手写数字识别mxnet官网例子手写数字识别简介:通过MNIST数据集建立一个手写数字分类器。(MNIST对于手写数据分类任务是一个广泛使用的数据集)。1.前提:mxnet0.10及以上、python、jupyternotebook(有时间可以jupyter notebook的用法,如:PPT的制作)pip install requests jupyter python下jupyternotebook的安装2.加载数据集:importmxnetasmxmnist = mx.test_utils.get_mnist()此时MXNET数据集已完全加载到内存中(注:此法对于大型数据集不适用)考虑要素:

2、快速高效地从源直接流数据+输入样本的顺序图像通常用4维数组来表示:(batch_size,num_channels,width,height)对于MNIST数据集,因为是28*28灰度图像,所以只有1个颜色通道,width=28,height=28,本例中batch=100(批处理100),即输入形状是(batch_size,1,28,28)数据迭代器通过随机的调整输入来解决连续feed相同样本的问题。测试数据的顺序无关紧要。batch_size = 100train_iter=mx.io.NDArrayIter(mnisttrain_data,mnisttrain_label, batch_

3、size, shuffle=True)val_iter = mx.io.NDArrayIter(mnisttest_data, mnisttest_label, batch_size)初始化MNIST数据集的数据迭代器(2个:训练数据+测试数据)3.训练+预测:(2种方法) (CNN优于MLP) 1)传统深度神经网络结构MLP(多层神经网络)MLPMXNET的符号接口为输入的数据创建一个占位符变量data = mx.sym.var(data)data = mx.sym.flatten(data=data)将数据从4维变成2维(batch_size,num_channel*width*heigh

4、t)fc1 =mx.sym.FullyConnected(data=data, num_hidden=128)act1 = mx.sym.Activation(data=fc1, act_type=relu)第一个全连接层及相应的激活函数fc2 =mx.sym.FullyConnected(data=act1, num_hidden = 64)act2 = mx.sym.Activation(data=fc2, act_type=relu)第二个全连接层及相应的激活函数(声明2个全连接层,每层有128个和64个神经元)fc3 =mx.sym.FullyConnected(data=act2,

5、num_hidden=10)声明大小10的最终完全连接层mlp =mx.sym.SoftmaxOutput(data=fc3, name=softmax)softmax的交叉熵损失MNIST的MLP网络结构以上,已完成了数据迭代器和神经网络的申明,下面可以进行训练。超参数:处理大小、学习速率importlogginglogging.getLogger().setLevel(logging.DEBUG) 记录到标准输出mlp_model = mx.mod.Module(symbol=mlp, context=mx.cpu()在CPU上创建一个可训练的模块mlp_model.fit(train_i

6、ter训练数据eval_data=val_iter, 验证数据 optimizer=sgd, 使用SGD训练optimizer_params=learning_rate:0.1, 使用固定的学习速率eval_metric=acc, 训练过程中报告准确性batch_end_callback=mx.callback.Speedometer(batch_size, 100), 每批次100数据输出的进展num_epoch=10)训练至多通过10个数据预测:test_iter = mx.io.NDArrayIter(mnisttest_data, None, batch_size)prob = mlp

7、_model.predict(test_iter)assertprob.shape = (10000, 10)计算每一个测试图像可能的预测得分(probij第i个测试图像包含j输出类)test_iter = mx.io.NDArrayIter(mnisttest_data, mnisttest_label, batch_size)预测精度的方法acc = mx.metric.Accuracy()mlp_model.score(test_iter, acc)print(acc)assertacc.get()1 0.96如果一切顺利的话,我们将看到一个准确的值大约是0.96,这意味着我们能够准确地

8、预测96%的测试图像中的数字。 2)卷积神经网络(CNN) 卷积层+池化层data = mx.sym.var(data)conv1 = mx.sym.Convolution(data=data, kernel=(5,5), num_filter=20)tanh1 = mx.sym.Activation(data=conv1, act_type=tanh)pool1 = mx.sym.Pooling(data=tanh1, pool_type=max, kernel=(2,2), stride=(2,2)第一个卷积层、池化层conv2 = mx.sym.Convolution(data=pool

9、1, kernel=(5,5), num_filter=50)第二个卷积层tanh2 = mx.sym.Activation(data=conv2, act_type=tanh)pool2 = mx.sym.Pooling(data=tanh2, pool_type=max, kernel=(2,2), stride=(2,2)flatten = mx.sym.flatten(data=pool2)第一个全连接层fc1 = mx.symbol.FullyConnected(data=flatten, num_hidden=500)tanh3 = mx.sym.Activation(data=f

10、c1, act_type=tanh)fc2 = mx.sym.FullyConnected(data=tanh3, num_hidden=10)第二个全连接层lenet = mx.sym.SoftmaxOutput(data=fc2, name=softmax)Softmax损失LeNet第一个卷积层+池化层lenet_model = mx.mod.Module(symbol=lenet, context=mx.cpu()在GPU上创建一个可训练的模块lenet_model.fit(train_iter,eval_data=val_iter, optimizer=sgd,optimizer_p

11、arams=learning_rate:0.1,eval_metric=acc,batch_end_callback = mx.callback.Speedometer(batch_size, 100),num_epoch=10)训练(同MLP)test_iter = mx.io.NDArrayIter(mnisttest_data, None, batch_size)prob = lenet_model.predict(test_iter)test_iter = mx.io.NDArrayIter(mnisttest_data, mnisttest_label, batch_size)acc

12、 = mx.metric.Accuracy()预测LeNet的准确性lenet_model.score(test_iter, acc)print(acc)assertacc.get()1 0.98使用CNN,我们能够正确地预测所有测试图像的98%左右。附:完整代码1)MLPimportmxnetasmxmnist=mx.test_utils.get_mnist()batch_size=100train_iter=mx.io.NDArrayIter(mnisttrain_data,mnisttrain_label,batch_size,shuffle=True)val_iter=mx.io.ND

13、ArrayIter(mnisttest_data,mnisttest_label,batch_size)data=mx.sym.var(data)data=mx.sym.flatten(data=data)fc1=mx.sym.FullyConnected(data=data,num_hidden=128)act1=mx.sym.Activation(data=fc1,act_type=relu)fc2=mx.sym.FullyConnected(data=act1,num_hidden=64)act2=mx.sym.Activation(data=fc2,act_type=relu)fc3=

14、mx.sym.FullyConnected(data=act2,num_hidden=10)mlp=mx.sym.SoftmaxOutput(data=fc3,name=softmax)importlogginglogging.getLogger().setLevel(logging.DEBUG)mlp_model=mx.mod.Module(symbol=mlp,context=mx.cpu()mlp_model.fit(train_iter,eval_data=val_iter,optimizer=sgd,optimizer_params=learning_rate:0.1,eval_me

15、tric=acc,batch_end_callback=mx.callback.Speedometer(batch_size,100),num_epoch=10)test_iter=mx.io.NDArrayIter(mnisttest_data,None,batch_size)prob=mlp_model.predict(test_iter)assertprob.shape=(10000,10)test_iter=mx.io.NDArrayIter(mnisttest_data,mnisttest_label,batch_size)acc=mx.metric.Accuracy()mlp_mo

16、del.score(test_iter,acc)print(acc)assertacc.get()10.962)CNNimportmxnetasmxmnist=mx.test_utils.get_mnist()batch_size=100train_iter=mx.io.NDArrayIter(mnisttrain_data,mnisttrain_label,batch_size,shuffle=True)val_iter=mx.io.NDArrayIter(mnisttest_data,mnisttest_label,batch_size)data=mx.sym.var(data)conv1

17、=mx.sym.Convolution(data=data,kernel=(5,5),num_filter=20)tanh1=mx.sym.Activation(data=conv1,act_type=tanh)pool1=mx.sym.Pooling(data=tanh1,pool_type=max,kernel=(2,2),stride=(2,2)conv2=mx.sym.Convolution(data=pool1,kernel=(5,5),num_filter=50)tanh2=mx.sym.Activation(data=conv2,act_type=tanh)pool2=mx.sy

18、m.Pooling(data=tanh2,pool_type=max,kernel=(2,2),stride=(2,2)flatten=mx.sym.flatten(data=pool2)fc1=mx.symbol.FullyConnected(data=flatten,num_hidden=500)tanh3=mx.sym.Activation(data=fc1,act_type=tanh)fc2=mx.sym.FullyConnected(data=tanh3,num_hidden=10)lenet=mx.sym.SoftmaxOutput(data=fc2,name=softmax)le

19、net_model=mx.mod.Module(symbol=lenet,context=mx.cpu()lenet_model.fit(train_iter,eval_data=val_iter,optimizer=sgd,optimizer_params=learning_rate:0.1,eval_metric=acc,batch_end_callback=mx.callback.Speedometer(batch_size,100),num_epoch=10)test_iter=mx.io.NDArrayIter(mnisttest_data,None,batch_size)prob=lenet_model.predict(test_iter)test_iter=mx.io.NDArrayIter(mnisttest_data,mnisttest_label,batch_size)acc=mx.metric.Accuracy()lenet_model.score(test_iter,acc)print(acc)assertacc.get()10.98

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1