https://mxnet.incubator.apache.org/tutorials/basic/module.html

import logging
import random
logging.getLogger().setLevel(logging.INFO) import mxnet as mx
import numpy as np mx.random.seed(1234)
np.random.seed(1234)
random.seed(1234) # 准备数据
fname = mx.test_utils.download('https://s3.us-east-2.amazonaws.com/mxnet-public/letter_recognition/letter-recognition.data')
data = np.genfromtxt(fname=fname,delimiter=',')[:,1:]
label = np.array([ord(l.split(',')[0])-ord('A') for l in open(fname, 'r')]) batch_size = 32
ntrain = int(data.shape[0]*0.8) train_iter = mx.io.NDArrayIter(data[:ntrain,:],label[:ntrain],batch_size,shuffle=True)
val_iter = mx.io.NDArrayIter(data[ntrain:,:],label[ntrain:],batch_size) # 定义网络
net = mx.sym.Variable('data')
net = mx.sym.FullyConnected(net, name='fc1', num_hidden=64)
net = mx.sym.Activation(net, name='relu1', act_type="relu")
net = mx.sym.FullyConnected(net, name='fc2', num_hidden=26)
net = mx.sym.SoftmaxOutput(net, name='softmax')
mx.viz.plot_network(net, node_attrs={"shape":"oval","fixedsize":"false"}) # # 创建模块
mod = mx.mod.Module(symbol=net,
context=mx.cpu(),
data_names=['data'],
label_names=['softmax_label']) # # 中层接口
# # 训练模型
# mod.bind(data_shapes=train_iter.provide_data,label_shapes=train_iter.provide_label)
# mod.init_params(initializer=mx.init.Uniform(scale=.1))
# mod.init_optimizer(optimizer='sgd',optimizer_params=(('learning_rate',0.1),))
# metric = mx.metric.create('acc')
#
# for epoch in range(100):
# train_iter.reset()
# metric.reset()
# for batch in train_iter:
# mod.forward(batch,is_train=True)
# mod.update_metric(metric,batch.label)
# mod.backward()
# mod.update()
# print('Epoch %d,Training %s' % (epoch,metric.get())) # fit 高层接口
train_iter.reset()
mod = mx.mod.Module(symbol=net,
context=mx.cpu(),
data_names=['data'],
label_names=['softmax_label']) mod.fit(train_iter,
eval_data=val_iter,
optimizer='sgd',
optimizer_params={'learning_rate':0.1},
eval_metric='acc',
num_epoch=10) # 预测和评估
y = mod.predict(val_iter)
assert y.shape == (4000,26) # 评分
score = mod.score(val_iter,['acc'])
print("Accuracy score is %f"%(score[0][1]))
assert score[0][1] > 0.76, "Achieved accuracy (%f) is less than expected (0.76)" % score[0][1] # 保存和加载
# 构造一个回调函数保存检查点
model_prefix = 'mx_mlp'
checkpoint = mx.callback.do_checkpoint(model_prefix) mod = mx.mod.Module(symbol=net)
mod.fit(train_iter,num_epoch=5,epoch_end_callback=checkpoint) sym, arg_params, aux_params = mx.model.load_checkpoint(model_prefix, 3)
assert sym.tojson() == net.tojson() # assign the loaded parameters to the module
mod.set_params(arg_params, aux_params) mod = mx.mod.Module(symbol=sym)
mod.fit(train_iter,
num_epoch=21,
arg_params=arg_params,
aux_params=aux_params,
begin_epoch=3)
assert score[0][1] > 0.77, "Achieved accuracy (%f) is less than expected (0.77)" % score[0][1]

最新文章

  1. Android 源码下载方法(Git 方式clone)
  2. css3动画中的steps值详解
  3. sass初步认识3
  4. Linux性能监控之Memory篇
  5. 谈谈python 中__name__ = '__main__' 的作用
  6. 第一次启动MySQL时报错
  7. DefaultResouceLoader的设计
  8. Java ZIP压缩和解压缩文件并兼容linux
  9. caffe在windows编译project及执行mnist数据集測试
  10. openfec的学习笔记
  11. 微信分享大图遇到的问题(Android)
  12. server.xml配置介绍
  13. java.lang.RuntimeException: Invalid action class configuration that references an unknown class name
  14. JMS Session session = connection.createSession(paramA,paramB) 两个参数不同组合下的含义和区别
  15. CTPN项目部分代码学习
  16. selenium 定时任务
  17. allegro对齐操作
  18. 数据库ADO方式读取图片
  19. php执行外部命令
  20. firewall 防火墙相关

热门文章

  1. AtCoder Regular Contest 059 F Unhappy Hacking
  2. JSON跨域问题总结
  3. Centos 从零开始 (二)
  4. Mysql插入Emoji表情出错
  5. JQuery对数组的一些操作总结
  6. Apache2.4+PHP7.3 安装及整合教程[Windows]
  7. Java 线程--实现java.lang.Runnable接口实现线程
  8. c#之静态构造函数和单例模式
  9. Docker安装和状态查询指令
  10. sql: T-SQL 统计计算(父子關係,樹形,分級分類的統計)