Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
本文实例讲述了Python使用gluon/mxnet模块实现的mnist手写数字识别功能。分享给大家供大家参考,具体如下:
importgluonbookasgb frommxnetimportautograd,nd,init,gluon frommxnet.gluonimportlossasgloss,dataasgdata,nn,utilsasgutils importmxnetasmx net=nn.Sequential() withnet.name_scope(): net.add( nn.Conv2D(channels=32,kernel_size=5,activation='relu'), nn.MaxPool2D(pool_size=2,strides=2), nn.Flatten(), nn.Dense(128,activation='sigmoid'), nn.Dense(10,activation='sigmoid') ) lr=0.5 batch_size=256 ctx=mx.gpu() net.initialize(init=init.Xavier(),ctx=ctx) train_data,test_data=gb.load_data_fashion_mnist(batch_size) trainer=gluon.Trainer(net.collect_params(),'sgd',{'learning_rate':lr}) loss=gloss.SoftmaxCrossEntropyLoss() num_epochs=30 deftrain(train_data,test_data,net,loss,trainer,num_epochs): forepochinrange(num_epochs): total_loss=0 forx,yintrain_data: withautograd.record(): x=x.as_in_context(ctx) y=y.as_in_context(ctx) y_hat=net(x) l=loss(y_hat,y) l.backward() total_loss+=l trainer.step(batch_size) mx.nd.waitall() print("Epoch[{}]:Loss{}".format(epoch,total_loss.sum().asnumpy()[0]/(batch_size*len(train_data)))) if__name__=='__main__': try: ctx=mx.gpu() _=nd.zeros((1,),ctx=ctx) except: ctx=mx.cpu() ctx gb.train(train_data,test_data,net,loss,trainer,ctx,num_epochs)
更多关于Python相关内容可查看本站专题:《Python数学运算技巧总结》、《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。