mxnet mnist 2

本文详细介绍使用MXNet框架进行神经网络训练的过程,包括数据预处理、模型定义、训练配置及参数保存等关键步骤,通过具体示例展示了如何实现从数据加载到模型训练的完整流程。
import mxnet as mx
import numpy as np
import logging

logging.getLogger().setLevel(logging.INFO)
fname = mx.test_utils.download('http://archive.ics.uci.edu/ml/machine-learning-databases/letter-recognition/letter-recognition.data')
print(fname)
print("type(fname):", type(fname))

data = np.genfromtxt(fname, delimiter=',')[:,1:]
label = np.array([ord(l.split(',')[0])-ord('A') for l in open(fname, 'r')])

print("data:", data)
print("data.shape:", data.shape)
print("label:", label)
print("label.shape:", label.shape)

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)

input = mx.sym.Variable('data')
fc1 = mx.sym.FullyConnected(input, name='fc1', num_hidden=64)
relu1 = mx.sym.Activation(fc1, name='relu1', act_type="relu")
fc2 = mx.sym.FullyConnected(relu1, name='fc2', num_hidden=26)
net = mx.sym.SoftmaxOutput(fc2, name='softmax')
mx.viz.plot_network(net)



def train_1():
	mod = mx.mod.Module(symbol=net,context=mx.cpu(),data_names=['data'],label_names=['softmax_label'])
	# allocate memory given the input data and label shapes
	mod.bind(data_shapes=train_iter.provide_data, label_shapes=train_iter.provide_label)
	# initialize parameters by uniform random numbers
	mod.init_params(initializer=mx.init.Uniform(scale=.1))
	# use SGD with learning rate 0.1 to train
	mod.init_optimizer(optimizer='sgd', optimizer_params=(('learning_rate', 0.08), ))
	# use accuracy as the metric
	metric = mx.metric.create('acc')
	# train 5 epochs, i.e. going over the data iter one pass
	for epoch in range(24):
		train_iter.reset()
		metric.reset()
		for batch in train_iter:
			mod.forward(batch, is_train=True)       # compute predictions
			mod.update_metric(metric, batch.label)  # accumulate prediction accuracy
			mod.backward()                          # compute gradients
			mod.update()                            # update parameters
		print('Epoch %d, Training %s' % (epoch, metric.get()))

def train_2():
	# reset train_iter to the beginning
	train_iter.reset()		
	# create a module
	mod = mx.mod.Module(symbol=net,context=mx.cpu(),data_names=['data'],label_names=['softmax_label'])
	
	# fit the module
	# 默认情况下,fit 函数将eval_metric 设置为accuracy ,将optimizer 设置为sgd,将优化参数设置为((‘learning_rate’, 0.01),).
	mod.fit(train_iter, 
			eval_data=val_iter, 
			optimizer='sgd', 
			optimizer_params={'learning_rate':0.08}, 
			eval_metric='acc',
			num_epoch=32)
		
	y = mod.predict(val_iter)
	assert y.shape == (4000, 26)
	
	score = mod.score(val_iter, ['acc'])
	print("score:", score)
	print("Accuracy score is %f" % (score[0][1]))
	
def train_3():
	# reset train_iter to the beginning
	train_iter.reset()		
	
	# construct a callback function to save checkpoints
	model_prefix = 'mx_mlp'
	checkpoint = mx.callback.do_checkpoint(model_prefix)
	
	# create a module
	mod = mx.mod.Module(symbol=net,context=mx.cpu(),data_names=['data'],label_names=['softmax_label'])
	
	
	# fit the module
	# 默认情况下,fit 函数将eval_metric 设置为accuracy ,将optimizer 设置为sgd,将优化参数设置为((‘learning_rate’, 0.01),).
	mod.fit(train_iter, 
			eval_data=val_iter, 
			optimizer='sgd', 
			optimizer_params={'learning_rate':0.08}, 
			eval_metric='acc',
			num_epoch=32,
			epoch_end_callback=checkpoint)
		
	y = mod.predict(val_iter)
	assert y.shape == (4000, 26)
	
	score = mod.score(val_iter, ['acc'])
	print("score:", score)
	print("Accuracy score is %f" % (score[0][1]))
	
# 使用load_checkpoint 函数来载入保存的模型参数。它载入符号和与其相关的参数。
# 之后,我们可以将载入的参数设置到模型中。	
def train_4():
	model_prefix = "mx_mlp"
	sym, arg_params, aux_params = mx.model.load_checkpoint(model_prefix, 32)
	assert sym.tojson() == net.tojson()
	print("sym.tojson():", sym.tojson())
	print()
	print("net.tojson():", net.tojson())
	
	#train_iter.reset()		
	# create a module
	#mod = mx.mod.Module(symbol=sym,context=mx.cpu(),data_names=['data'],label_names=['softmax_label'])
	
	# assign the loaded parameters to the module
	#mod = mx.mod.Module(symbol=sym,context=mx.cpu(),data_names=['data'],label_names=['softmax_label'])
	#mod.set_params(arg_params, aux_params)
	#mod.fit(train_iter,num_epoch=48,begin_epoch=24)	
	
	# fit the module
	# 默认情况下,fit 函数将eval_metric 设置为accuracy ,将optimizer 设置为sgd,将优化参数设置为((‘learning_rate’, 0.01),).
	
	mod = mx.mod.Module(symbol=sym)
	mod.fit(train_iter,num_epoch=48,arg_params=arg_params,aux_params=aux_params,begin_epoch=32)	
	
	
#train_1()
#train_2()
#train_3()
train_4()

 

考虑柔性负荷的综合能源系统低碳经济优化调度【考虑碳交易机制】(Matlab代码实现)内容概要:本文围绕“考虑柔性负荷的综合能源系统低碳经济优化调度”展开,重点研究在碳交易机制下如何实现综合能源系统的低碳化与经济性协同优化。通过构建包含风电、光伏、储能、柔性负荷等多种能源形式的系统模型,结合碳交易成本与能源调度成本,提出优化调度策略,以降低碳排放并提升系统运行经济性。文中采用Matlab进行仿真代码实现,验证了所提模型在平衡能源供需、平抑可再生能源波动、引导柔性负荷参与调度等方面的有效性,为低碳能源系统的设计与运行提供了技术支撑。; 适合人群:具备一定电力系统、能源系统背景,熟悉Matlab编程,从事能源优化、低碳调度、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究碳交易机制对综合能源系统调度决策的影响;②实现柔性负荷在削峰填谷、促进可再生能源消纳中的作用;③掌握基于Matlab的能源系统建模与优化求解方法;④为实际综合能源项目提供低碳经济调度方案参考。; 阅读建议:建议读者结合Matlab代码深入理解模型构建与求解过程,重点关注目标函数设计、约束条件设置及碳交易成本的量化方式,可进一步扩展至多能互补、需求响应等场景进行二次开发与仿真验证。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值