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)
# 數(shù)據(jù)準(zhǔn)備,數(shù)據(jù)和label,label轉(zhuǎn)換成距離A的數(shù)字
# shape=(20000,16) , 根據(jù)2:8法則烘绽,取80%作為訓(xùn)練集
fname = mx.test_utils.download('https://s3.us-east-2.amazonaws.com/mxnet-public/letter_recognition/letter-recognition.data')
data = np.genfromtxt(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)
# 網(wǎng)絡(luò)結(jié)構(gòu)定義
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'])
# 模型訓(xùn)練一
# 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.1), ))
# 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(5):
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()))
# 模型訓(xùn)練二
'''
# 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
mod.fit(train_iter,
eval_data=val_iter,
optimizer='sgd',
optimizer_params={'learning_rate':0.1},
eval_metric='acc',
num_epoch=7)
'''
# 模型預(yù)測(cè)
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.74, "Achieved accuracy (%f) is less than expected (0.76)" % score[0][1]
# 模型保存
# construct a callback function to save checkpoints
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]
MXNET-DEMO分析
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門朋譬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人兴垦,你說(shuō)我怎么就攤上這事徙赢∽帜” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵狡赐,是天一觀的道長(zhǎng)窑业。 經(jīng)常有香客問(wèn)我,道長(zhǎng)阴汇,這世上最難降的妖魔是什么数冬? 我笑而不...
- 正文 為了忘掉前任节槐,我火速辦了婚禮搀庶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘铜异。我一直安慰自己哥倔,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布揍庄。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪爆阶。 梳的紋絲不亂的頭發(fā)上斥扛,一...
- 那天,我揣著相機(jī)與錄音食茎,去河邊找鬼蒂破。 笑死,一個(gè)胖子當(dāng)著我的面吹牛别渔,可吹牛的內(nèi)容都是我干的附迷。 我是一名探鬼主播,決...
- 文/蒼蘭香墨 我猛地睜開眼哎媚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼喇伯!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起拨与,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤稻据,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后买喧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捻悯,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年岗喉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秋度。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
- 正文 年R本政府宣布滥壕,位于F島的核電站,受9級(jí)特大地震影響兽泣,放射性物質(zhì)發(fā)生泄漏绎橘。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一唠倦、第九天 我趴在偏房一處隱蔽的房頂上張望称鳞。 院中可真熱鬧,春花似錦稠鼻、人聲如沸冈止。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)熙暴。三九已至,卻和暖如春慌盯,著一層夾襖步出監(jiān)牢的瞬間周霉,已是汗流浹背。 一陣腳步聲響...
- 正文 我出身青樓孕讳,卻偏偏與公主長(zhǎng)得像匠楚,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子厂财,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- RunLoop的概念 首先我們通過(guò)Xcode創(chuàng)建一個(gè)Command Line Tool project芋簿。發(fā)現(xiàn)Xco...
- 環(huán)信官方Demo源碼分析及SDK簡(jiǎn)單應(yīng)用 環(huán)信官方Demo源碼分析及SDK簡(jiǎn)單應(yīng)用-ChatDemoUI3.0 環(huán)...
- 前言:近期看了一下RAC中的宏命令,發(fā)現(xiàn)其中的宏命令一環(huán)扣一環(huán),環(huán)環(huán)相扣,把我都給整懵逼了... 通過(guò)深入學(xué)習(xí),終...
- 鎮(zhèn)樓圖 官方說(shuō)明: CoreML讓你將很多機(jī)器學(xué)習(xí)模型集成到你的app中与斤。除了支持層數(shù)超過(guò)30層的深度學(xué)習(xí)之外,還...
- 環(huán)信官方Demo源碼分析及SDK簡(jiǎn)單應(yīng)用 環(huán)信官方Demo源碼分析及SDK簡(jiǎn)單應(yīng)用-ChatDemoUI3.0 環(huán)...