<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>http://samediff.kr/wiki/index.php?action=history&amp;feed=atom&amp;title=Mxnet%2FTraining_and_Inference</id>
	<title>Mxnet/Training and Inference - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="http://samediff.kr/wiki/index.php?action=history&amp;feed=atom&amp;title=Mxnet%2FTraining_and_Inference"/>
	<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Mxnet/Training_and_Inference&amp;action=history"/>
	<updated>2026-04-28T23:13:22Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>http://samediff.kr/wiki/index.php?title=Mxnet/Training_and_Inference&amp;diff=12527&amp;oldid=prev</id>
		<title>Admin: 새 문서: ===Linear Regression=== [http://mxnet.io/tutorials/python/linear-regression.html#linear-regression 원문] &lt;br&gt;전체 소스 &lt;pre&gt;import mxnet as mx import numpy as np  #Training data...</title>
		<link rel="alternate" type="text/html" href="http://samediff.kr/wiki/index.php?title=Mxnet/Training_and_Inference&amp;diff=12527&amp;oldid=prev"/>
		<updated>2017-07-04T09:34:01Z</updated>

		<summary type="html">&lt;p&gt;새 문서: ===Linear Regression=== [http://mxnet.io/tutorials/python/linear-regression.html#linear-regression 원문] &amp;lt;br&amp;gt;전체 소스 &amp;lt;pre&amp;gt;import mxnet as mx import numpy as np  #Training data...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;===Linear Regression===&lt;br /&gt;
[http://mxnet.io/tutorials/python/linear-regression.html#linear-regression 원문]&lt;br /&gt;
&amp;lt;br&amp;gt;전체 소스&lt;br /&gt;
&amp;lt;pre&amp;gt;import mxnet as mx&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
#Training data&lt;br /&gt;
train_data = np.random.uniform(0, 1, [100, 2])&lt;br /&gt;
train_label = np.array([train_data[i][0] + 2 * train_data[i][1] for i in range(100)])&lt;br /&gt;
batch_size = 1&lt;br /&gt;
&lt;br /&gt;
#Evaluation Data&lt;br /&gt;
eval_data = np.array([[7,2],[6,10],[12,2]])&lt;br /&gt;
eval_label = np.array([11,26,16])&lt;br /&gt;
&lt;br /&gt;
train_iter = mx.io.NDArrayIter(train_data,train_label, batch_size, shuffle=True,label_name='lin_reg_label')           #(1)&lt;br /&gt;
eval_iter = mx.io.NDArrayIter(eval_data, eval_label, batch_size, shuffle=False)&lt;br /&gt;
&lt;br /&gt;
X = mx.sym.Variable('data')&lt;br /&gt;
Y = mx.symbol.Variable('lin_reg_label')         #(2)&lt;br /&gt;
fully_connected_layer  = mx.sym.FullyConnected(data=X, name='fc1', num_hidden = 1)&lt;br /&gt;
lro = mx.sym.LinearRegressionOutput(data=fully_connected_layer, label=Y, name=&amp;quot;lro&amp;quot;)             #(3)&lt;br /&gt;
&lt;br /&gt;
model = mx.mod.Module(&lt;br /&gt;
    symbol = lro ,&lt;br /&gt;
    data_names=['data'],&lt;br /&gt;
    label_names = ['lin_reg_label']# network structure      (4)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
mx.viz.plot_network(symbol=lro)&lt;br /&gt;
# (5)&lt;br /&gt;
model.fit(train_iter, eval_iter,&lt;br /&gt;
            optimizer_params={'learning_rate':0.005, 'momentum': 0.9},&lt;br /&gt;
            num_epoch=1000,&lt;br /&gt;
            batch_end_callback = mx.callback.Speedometer(batch_size, 2))&lt;br /&gt;
&lt;br /&gt;
model.predict(eval_iter).asnumpy()&lt;br /&gt;
&lt;br /&gt;
metric = mx.metric.MSE()&lt;br /&gt;
model.score(eval_iter, metric)&lt;br /&gt;
&lt;br /&gt;
eval_data = np.array([[7,2],[6,10],[12,2]])&lt;br /&gt;
eval_label = np.array([11.1,26.1,16.1]) #Adding 0.1 to each of the values&lt;br /&gt;
eval_iter = mx.io.NDArrayIter(eval_data, eval_label, batch_size, shuffle=False)&lt;br /&gt;
model.score(eval_iter, metric)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(3) {{c| mx.sym.LinearRegressionOutput}}은 l2 loss계산함. &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;(1),(2)에서 {{c|lin_reg_label}}이라고 준 것과 {{c|NDArrayIter}}에서 이름이 일치해야 한다.&amp;lt;/i&amp;gt; &amp;lt;code&amp;gt;train_iter = mx.io.NDArrayIter(..., label_name='&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;lin_reg_label&amp;lt;/span&amp;gt;'  ) &amp;lt;/code&amp;gt; &amp;lt;i&amp;gt; 다시말해, 입력단의 이름이 일치해야 한다는 얘기. 결국 (4)에 나오는 이름까지 일치해야 해서 같은 이름이 세번 나온다&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(5)의 {{c|model.fit}}에서 {{c|batch_end_callback}}으로 &amp;lt;code&amp;gt;[http://mxnet.io/api/python/callback.html?highlight=ck.speedometer#mxnet.callback.Speedometer mx.callback.Speedometer]&amp;lt;/code&amp;gt;줄 수 있다.&lt;br /&gt;
*&amp;lt;code&amp;gt;Speedometer(batch_size, frequent=50, auto_reset=True)&amp;lt;/code&amp;gt; : 배치 50번마다 로깅하고, 로깅 후 reset할것. 아래를 미리 해줘야 stdout에 보인다.&lt;br /&gt;
&amp;lt;pre&amp;gt;import logging&lt;br /&gt;
logging.getLogger().setLevel(logging.DEBUG)&amp;lt;/pre&amp;gt;&lt;br /&gt;
실행해보면,&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt;&amp;gt;&amp;gt; # Print training speed and evaluation metrics every ten batches. Batch size is one.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; module.fit(iterator, num_epoch=n_epoch,&lt;br /&gt;
... batch_end_callback=mx.callback.Speedometer(1, 10))&lt;br /&gt;
Epoch[0] Batch [10] Speed: 1910.41 samples/sec  Train-accuracy=0.200000&lt;br /&gt;
Epoch[0] Batch [20] Speed: 1764.83 samples/sec  Train-accuracy=0.400000&lt;br /&gt;
Epoch[0] Batch [30] Speed: 1740.59 samples/sec  Train-accuracy=0.500000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Handwritten Digit Recognition===&lt;br /&gt;
[http://mxnet.io/tutorials/python/mnist.html#handwritten-digit-recognition 원문]&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
====full src====&lt;br /&gt;
&amp;lt;div class=mw-collapsible-content&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import mxnet as mx&lt;br /&gt;
mnist = mx.test_utils.get_mnist()&lt;br /&gt;
&lt;br /&gt;
batch_size = 100&lt;br /&gt;
train_iter = mx.io.NDArrayIter(mnist['train_data'], mnist['train_label'], batch_size, shuffle=True)&lt;br /&gt;
val_iter = mx.io.NDArrayIter(mnist['test_data'], mnist['test_label'], batch_size)&lt;br /&gt;
&lt;br /&gt;
data = mx.sym.var('data')&lt;br /&gt;
# Flatten the data from 4-D shape into 2-D (batch_size, num_channel*width*height)&lt;br /&gt;
data = mx.sym.flatten(data=data)&lt;br /&gt;
&lt;br /&gt;
# The first fully-connected layer and the corresponding activation function&lt;br /&gt;
fc1  = mx.sym.FullyConnected(data=data, num_hidden=128)&lt;br /&gt;
act1 = mx.sym.Activation(data=fc1, act_type=&amp;quot;relu&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# The second fully-connected layer and the corresponding activation function&lt;br /&gt;
fc2  = mx.sym.FullyConnected(data=act1, num_hidden = 64)&lt;br /&gt;
act2 = mx.sym.Activation(data=fc2, act_type=&amp;quot;relu&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# MNIST has 10 classes&lt;br /&gt;
fc3  = mx.sym.FullyConnected(data=act2, num_hidden=10)&lt;br /&gt;
# Softmax with cross entropy loss&lt;br /&gt;
mlp  = mx.sym.SoftmaxOutput(data=fc3, name='softmax')&lt;br /&gt;
&lt;br /&gt;
import logging&lt;br /&gt;
logging.getLogger().setLevel(logging.DEBUG)  # logging to stdout&lt;br /&gt;
# create a trainable module on CPU&lt;br /&gt;
mlp_model = mx.mod.Module(symbol=mlp, context=mx.cpu())&lt;br /&gt;
mlp_model.fit(train_iter,  # train data&lt;br /&gt;
              eval_data=val_iter,  # validation data&lt;br /&gt;
              optimizer='sgd',  # use SGD to train&lt;br /&gt;
              optimizer_params={'learning_rate':0.1},  # use fixed learning rate&lt;br /&gt;
              eval_metric='acc',  # report accuracy during training&lt;br /&gt;
              batch_end_callback = mx.callback.Speedometer(batch_size, 100), # output progress for each 100 data batches&lt;br /&gt;
              num_epoch=10)  # train for at most 10 dataset passes&lt;br /&gt;
&lt;br /&gt;
test_iter = mx.io.NDArrayIter(mnist['test_data'], None, batch_size)&lt;br /&gt;
prob = mlp_model.predict(test_iter)&lt;br /&gt;
assert prob.shape == (10000, 10)&lt;br /&gt;
&lt;br /&gt;
test_iter = mx.io.NDArrayIter(mnist['test_data'], mnist['test_label'], batch_size)&lt;br /&gt;
# predict accuracy of mlp&lt;br /&gt;
acc = mx.metric.Accuracy()&lt;br /&gt;
mlp_model.score(test_iter, acc)&lt;br /&gt;
print(acc)&lt;br /&gt;
assert acc.get()[1] &amp;gt; 0.96&lt;br /&gt;
&lt;br /&gt;
data = mx.sym.var('data')&lt;br /&gt;
# first conv layer&lt;br /&gt;
conv1 = mx.sym.Convolution(data=data, kernel=(5,5), num_filter=20)&lt;br /&gt;
tanh1 = mx.sym.Activation(data=conv1, act_type=&amp;quot;tanh&amp;quot;)&lt;br /&gt;
pool1 = mx.sym.Pooling(data=tanh1, pool_type=&amp;quot;max&amp;quot;, kernel=(2,2), stride=(2,2))&lt;br /&gt;
# second conv layer&lt;br /&gt;
conv2 = mx.sym.Convolution(data=pool1, kernel=(5,5), num_filter=50)&lt;br /&gt;
tanh2 = mx.sym.Activation(data=conv2, act_type=&amp;quot;tanh&amp;quot;)&lt;br /&gt;
pool2 = mx.sym.Pooling(data=tanh2, pool_type=&amp;quot;max&amp;quot;, kernel=(2,2), stride=(2,2))&lt;br /&gt;
# first fullc layer&lt;br /&gt;
flatten = mx.sym.flatten(data=pool2)&lt;br /&gt;
fc1 = mx.symbol.FullyConnected(data=flatten, num_hidden=500)&lt;br /&gt;
tanh3 = mx.sym.Activation(data=fc1, act_type=&amp;quot;tanh&amp;quot;)&lt;br /&gt;
# second fullc&lt;br /&gt;
fc2 = mx.sym.FullyConnected(data=tanh3, num_hidden=10)&lt;br /&gt;
# softmax loss&lt;br /&gt;
lenet = mx.sym.SoftmaxOutput(data=fc2, name='softmax')&lt;br /&gt;
&lt;br /&gt;
# create a trainable module on GPU 0&lt;br /&gt;
lenet_model = mx.mod.Module(symbol=lenet, context=mx.cpu())&lt;br /&gt;
# train with the same&lt;br /&gt;
lenet_model.fit(train_iter,&lt;br /&gt;
                eval_data=val_iter,&lt;br /&gt;
                optimizer='sgd',&lt;br /&gt;
                optimizer_params={'learning_rate':0.1},&lt;br /&gt;
                eval_metric='acc',&lt;br /&gt;
                batch_end_callback = mx.callback.Speedometer(batch_size, 100),&lt;br /&gt;
                num_epoch=10)&lt;br /&gt;
&lt;br /&gt;
test_iter = mx.io.NDArrayIter(mnist['test_data'], None, batch_size)&lt;br /&gt;
prob = lenet_model.predict(test_iter)&lt;br /&gt;
test_iter = mx.io.NDArrayIter(mnist['test_data'], mnist['test_label'], batch_size)&lt;br /&gt;
# predict accuracy for lenet&lt;br /&gt;
acc = mx.metric.Accuracy()&lt;br /&gt;
lenet_model.score(test_iter, acc)&lt;br /&gt;
print(acc)&lt;br /&gt;
assert acc.get()[1] &amp;gt; 0.98&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Loading data====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mx.test_utils.get_mnist()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
이 뒤로는 trivial.&lt;br /&gt;
&lt;br /&gt;
===Predict with pre-trained models===&lt;br /&gt;
&lt;br /&gt;
===Large Scale Image Classification===&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
</feed>