blob: a74d795ea83c4be688b895719192314cc80e0ec9 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta content="width=device-width, initial-scale=1" name="viewport"/>
<title>Develop a Neural Network with MXNet in Five Minutes — mxnet documentation</title>
<link crossorigin="anonymous" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" rel="stylesheet"/>
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet"/>
<link href="../../_static/basic.css" rel="stylesheet" type="text/css">
<link href="../../_static/pygments.css" rel="stylesheet" type="text/css">
<link href="../../_static/mxnet.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
VERSION: '',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: ''
};
</script>
<script src="../../_static/jquery-1.11.1.js" type="text/javascript"></script>
<script src="../../_static/underscore.js" type="text/javascript"></script>
<script src="../../_static/searchtools_custom.js" type="text/javascript"></script>
<script src="../../_static/doctools.js" type="text/javascript"></script>
<script src="../../_static/selectlang.js" type="text/javascript"></script>
<script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script>
<script type="text/javascript"> jQuery(function() { Search.loadIndex("/searchindex.js"); Search.init();}); </script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new
Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-96378503-1', 'auto');
ga('send', 'pageview');
</script>
<!-- -->
<!-- <script type="text/javascript" src="../../_static/jquery.js"></script> -->
<!-- -->
<!-- <script type="text/javascript" src="../../_static/underscore.js"></script> -->
<!-- -->
<!-- <script type="text/javascript" src="../../_static/doctools.js"></script> -->
<!-- -->
<!-- <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> -->
<!-- -->
<link href="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/image/mxnet-icon.png" rel="icon" type="image/png"/>
</link></link></head>
<body role="document"><!-- Previous Navbar Layout
<div class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="../../" class="navbar-brand">
<img src="http://data.mxnet.io/theme/mxnet.png">
</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul id="navbar" class="navbar navbar-left">
<li> <a href="../../get_started/index.html">Get Started</a> </li>
<li> <a href="../../tutorials/index.html">Tutorials</a> </li>
<li> <a href="../../how_to/index.html">How To</a> </li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="true">Packages <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="../../packages/python/index.html">
Python
</a></li>
<li><a href="../../packages/r/index.html">
R
</a></li>
<li><a href="../../packages/julia/index.html">
Julia
</a></li>
<li><a href="../../packages/c++/index.html">
C++
</a></li>
<li><a href="../../packages/scala/index.html">
Scala
</a></li>
<li><a href="../../packages/perl/index.html">
Perl
</a></li>
</ul>
</li>
<li> <a href="../../system/index.html">System</a> </li>
<li>
<form class="" role="search" action="../../search.html" method="get" autocomplete="off">
<div class="form-group inner-addon left-addon">
<i class="glyphicon glyphicon-search"></i>
<input type="text" name="q" class="form-control" placeholder="Search">
</div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form> </li>
</ul>
<ul id="navbar" class="navbar navbar-right">
<li> <a href="../../index.html"><span class="flag-icon flag-icon-us"></span></a> </li>
<li> <a href="../..//zh/index.html"><span class="flag-icon flag-icon-cn"></span></a> </li>
</ul>
</div>
</div>
</div>
Previous Navbar Layout End -->
<div class="navbar navbar-fixed-top">
<div class="container" id="navContainer">
<div class="innder" id="header-inner">
<h1 id="logo-wrap">
<a href="../../" id="logo"><img src="http://data.mxnet.io/theme/mxnet.png"/></a>
</h1>
<nav class="nav-bar" id="main-nav">
<a class="main-nav-link" href="../../get_started/install.html">Install</a>
<a class="main-nav-link" href="../../tutorials/index.html">Tutorials</a>
<a class="main-nav-link" href="../../how_to/index.html">How To</a>
<span id="dropdown-menu-position-anchor">
<a aria-expanded="true" aria-haspopup="true" class="main-nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button">API <span class="caret"></span></a>
<ul class="dropdown-menu" id="package-dropdown-menu">
<li><a class="main-nav-link" href="../../api/python/index.html">Python</a></li>
<li><a class="main-nav-link" href="../../api/scala/index.html">Scala</a></li>
<li><a class="main-nav-link" href="../../api/r/index.html">R</a></li>
<li><a class="main-nav-link" href="../../api/julia/index.html">Julia</a></li>
<li><a class="main-nav-link" href="../../api/c++/index.html">C++</a></li>
<li><a class="main-nav-link" href="../../api/perl/index.html">Perl</a></li>
</ul>
</span>
<a class="main-nav-link" href="../../architecture/index.html">Architecture</a>
<!-- <a class="main-nav-link" href="../../community/index.html">Community</a> -->
<a class="main-nav-link" href="https://github.com/dmlc/mxnet">Github</a>
<span id="dropdown-menu-position-anchor-version" style="position: relative"><a href="#" class="main-nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="true">Versions(master)<span class="caret"></span></a><ul id="package-dropdown-menu" class="dropdown-menu"><li><a class="main-nav-link" href=http://mxnet.incubator.apache.org/test/>v0.10.14</a></li><li><a class="main-nav-link" href=http://mxnet.incubator.apache.org/test/versions/0.10/index.html>0.10</a></li><li><a class="main-nav-link" href=http://mxnet.incubator.apache.org/test/versions/master/index.html>master</a></li></ul></span></nav>
<script> function getRootPath(){ return "../../" } </script>
<div class="burgerIcon dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#" role="button"></a>
<ul class="dropdown-menu dropdown-menu-right" id="burgerMenu">
<li><a href="../../get_started/install.html">Install</a></li>
<li><a href="../../tutorials/index.html">Tutorials</a></li>
<li><a href="../../how_to/index.html">How To</a></li>
<li class="dropdown-submenu">
<a href="#" tabindex="-1">API</a>
<ul class="dropdown-menu">
<li><a href="../../api/python/index.html" tabindex="-1">Python</a>
</li>
<li><a href="../../api/scala/index.html" tabindex="-1">Scala</a>
</li>
<li><a href="../../api/r/index.html" tabindex="-1">R</a>
</li>
<li><a href="../../api/julia/index.html" tabindex="-1">Julia</a>
</li>
<li><a href="../../api/c++/index.html" tabindex="-1">C++</a>
</li>
<li><a href="../../api/perl/index.html" tabindex="-1">Perl</a>
</li>
</ul>
</li>
<li><a href="../../architecture/index.html">Architecture</a></li>
<li><a class="main-nav-link" href="https://github.com/dmlc/mxnet">Github</a></li>
<li id="dropdown-menu-position-anchor-version-mobile" class="dropdown-submenu" style="position: relative"><a href="#" tabindex="-1">Versions(master)</a><ul class="dropdown-menu"><li><a tabindex="-1" href=http://mxnet.incubator.apache.org/test/>v0.10.14</a></li><li><a tabindex="-1" href=http://mxnet.incubator.apache.org/test/versions/0.10/index.html>0.10</a></li><li><a tabindex="-1" href=http://mxnet.incubator.apache.org/test/versions/master/index.html>master</a></li></ul></li></ul>
</div>
<div class="plusIcon dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#" role="button"><span aria-hidden="true" class="glyphicon glyphicon-plus"></span></a>
<ul class="dropdown-menu dropdown-menu-right" id="plusMenu"></ul>
</div>
<div id="search-input-wrap">
<form action="../../search.html" autocomplete="off" class="" method="get" role="search">
<div class="form-group inner-addon left-addon">
<i class="glyphicon glyphicon-search"></i>
<input class="form-control" name="q" placeholder="Search" type="text"/>
</div>
<input name="check_keywords" type="hidden" value="yes">
<input name="area" type="hidden" value="default"/>
</input></form>
<div id="search-preview"></div>
</div>
<div id="searchIcon">
<span aria-hidden="true" class="glyphicon glyphicon-search"></span>
</div>
<!-- <div id="lang-select-wrap"> -->
<!-- <label id="lang-select-label"> -->
<!-- <\!-- <i class="fa fa-globe"></i> -\-> -->
<!-- <span></span> -->
<!-- </label> -->
<!-- <select id="lang-select"> -->
<!-- <option value="en">Eng</option> -->
<!-- <option value="zh">中文</option> -->
<!-- </select> -->
<!-- </div> -->
<!-- <a id="mobile-nav-toggle">
<span class="mobile-nav-toggle-bar"></span>
<span class="mobile-nav-toggle-bar"></span>
<span class="mobile-nav-toggle-bar"></span>
</a> -->
</div>
</div>
</div>
<div class="container">
<div class="row">
<div aria-label="main navigation" class="sphinxsidebar leftsidebar" role="navigation">
<div class="sphinxsidebarwrapper">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../api/python/index.html">Python Documents</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../api/r/index.html">R Documents</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../api/julia/index.html">Julia Documents</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../api/c++/index.html">C++ Documents</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../api/scala/index.html">Scala Documents</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../api/perl/index.html">Perl Documents</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../how_to/index.html">HowTo Documents</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../architecture/index.html">System Documents</a></li>
<li class="toctree-l1"><a class="reference internal" href="../index.html">Tutorials</a></li>
</ul>
</div>
</div>
<div class="content">
<div class="section" id="develop-a-neural-network-with-mxnet-in-five-minutes">
<span id="develop-a-neural-network-with-mxnet-in-five-minutes"></span><h1>Develop a Neural Network with MXNet in Five Minutes<a class="headerlink" href="#develop-a-neural-network-with-mxnet-in-five-minutes" title="Permalink to this headline"></a></h1>
<p>This tutorial is designed for new users of the <code class="docutils literal"><span class="pre">mxnet</span></code> package for R. It shows how to construct a neural network to do regression in 5 minutes. It shows how to perform classification and regression tasks, respectively. The data we use is in the <code class="docutils literal"><span class="pre">mlbench</span></code> package.</p>
<div class="section" id="classification">
<span id="classification"></span><h2>Classification<a class="headerlink" href="#classification" title="Permalink to this headline"></a></h2>
<div class="highlight-r"><div class="highlight"><pre><span></span> <span class="kn">require</span><span class="p">(</span>mlbench<span class="p">)</span>
</pre></div>
</div>
<div class="highlight-python"><div class="highlight"><pre><span></span> <span class="c1">## Loading required package: mlbench</span>
</pre></div>
</div>
<div class="highlight-r"><div class="highlight"><pre><span></span> <span class="kn">require</span><span class="p">(</span>mxnet<span class="p">)</span>
</pre></div>
</div>
<div class="highlight-python"><div class="highlight"><pre><span></span> <span class="c1">## Loading required package: mxnet</span>
<span class="c1">## Loading required package: methods</span>
</pre></div>
</div>
<div class="highlight-r"><div class="highlight"><pre><span></span> data<span class="p">(</span>Sonar<span class="p">,</span> package<span class="o">=</span><span class="s">"mlbench"</span><span class="p">)</span>
Sonar<span class="p">[,</span><span class="m">61</span><span class="p">]</span> <span class="o">=</span> <span class="kp">as.numeric</span><span class="p">(</span>Sonar<span class="p">[,</span><span class="m">61</span><span class="p">])</span><span class="m">-1</span>
train.ind <span class="o">=</span> <span class="kt">c</span><span class="p">(</span><span class="m">1</span><span class="o">:</span><span class="m">50</span><span class="p">,</span> <span class="m">100</span><span class="o">:</span><span class="m">150</span><span class="p">)</span>
train.x <span class="o">=</span> <span class="kp">data.matrix</span><span class="p">(</span>Sonar<span class="p">[</span>train.ind<span class="p">,</span> <span class="m">1</span><span class="o">:</span><span class="m">60</span><span class="p">])</span>
train.y <span class="o">=</span> Sonar<span class="p">[</span>train.ind<span class="p">,</span> <span class="m">61</span><span class="p">]</span>
test.x <span class="o">=</span> <span class="kp">data.matrix</span><span class="p">(</span>Sonar<span class="p">[</span><span class="o">-</span>train.ind<span class="p">,</span> <span class="m">1</span><span class="o">:</span><span class="m">60</span><span class="p">])</span>
test.y <span class="o">=</span> Sonar<span class="p">[</span><span class="o">-</span>train.ind<span class="p">,</span> <span class="m">61</span><span class="p">]</span>
</pre></div>
</div>
<p>We are going to use a multi-layer perceptron as our classifier. In <code class="docutils literal"><span class="pre">mxnet</span></code>, we have a function called <code class="docutils literal"><span class="pre">mx.mlp</span></code> for building a general multi-layer neural network to do classification or regression.</p>
<p><code class="docutils literal"><span class="pre">mx.mlp</span></code> requires the following parameters:</p>
<ul class="simple">
<li>Training data and label</li>
<li>Number of hidden nodes in each hidden layer</li>
<li>Number of nodes in the output layer</li>
<li>Type of the activation</li>
<li>Type of the output loss</li>
<li>The device to train (GPU or CPU)</li>
<li>Other parameters for <code class="docutils literal"><span class="pre">mx.model.FeedForward.create</span></code></li>
</ul>
<p>The following code shows an example usage of <code class="docutils literal"><span class="pre">mx.mlp</span></code>:</p>
<div class="highlight-r"><div class="highlight"><pre><span></span> mx.set.seed<span class="p">(</span><span class="m">0</span><span class="p">)</span>
model <span class="o"><-</span> mx.mlp<span class="p">(</span>train.x<span class="p">,</span> train.y<span class="p">,</span> hidden_node<span class="o">=</span><span class="m">10</span><span class="p">,</span> out_node<span class="o">=</span><span class="m">2</span><span class="p">,</span> out_activation<span class="o">=</span><span class="s">"softmax"</span><span class="p">,</span>
num.round<span class="o">=</span><span class="m">20</span><span class="p">,</span> array.batch.size<span class="o">=</span><span class="m">15</span><span class="p">,</span> learning.rate<span class="o">=</span><span class="m">0.07</span><span class="p">,</span> momentum<span class="o">=</span><span class="m">0.9</span><span class="p">,</span>
eval.metric<span class="o">=</span>mx.metric.accuracy<span class="p">)</span>
</pre></div>
</div>
<div class="highlight-python"><div class="highlight"><pre><span></span> <span class="c1">## Auto detect layout of input matrix, use rowmajor..</span>
<span class="c1">## Start training with 1 devices</span>
<span class="c1">## [1] Train-accuracy=0.488888888888889</span>
<span class="c1">## [2] Train-accuracy=0.514285714285714</span>
<span class="c1">## [3] Train-accuracy=0.514285714285714</span>
<span class="c1">## [4] Train-accuracy=0.514285714285714</span>
<span class="c1">## [5] Train-accuracy=0.514285714285714</span>
<span class="c1">## [6] Train-accuracy=0.523809523809524</span>
<span class="c1">## [7] Train-accuracy=0.619047619047619</span>
<span class="c1">## [8] Train-accuracy=0.695238095238095</span>
<span class="c1">## [9] Train-accuracy=0.695238095238095</span>
<span class="c1">## [10] Train-accuracy=0.761904761904762</span>
<span class="c1">## [11] Train-accuracy=0.828571428571429</span>
<span class="c1">## [12] Train-accuracy=0.771428571428571</span>
<span class="c1">## [13] Train-accuracy=0.742857142857143</span>
<span class="c1">## [14] Train-accuracy=0.733333333333333</span>
<span class="c1">## [15] Train-accuracy=0.771428571428571</span>
<span class="c1">## [16] Train-accuracy=0.847619047619048</span>
<span class="c1">## [17] Train-accuracy=0.857142857142857</span>
<span class="c1">## [18] Train-accuracy=0.838095238095238</span>
<span class="c1">## [19] Train-accuracy=0.838095238095238</span>
<span class="c1">## [20] Train-accuracy=0.838095238095238</span>
</pre></div>
</div>
<p>Note that <code class="docutils literal"><span class="pre">mx.set.seed</span></code> controls the random process in <code class="docutils literal"><span class="pre">mxnet</span></code>. You can see the accuracy in each round during training. It’s also easy to make predictions and evaluate.</p>
<p>To get an idea of what is happening, view the computation graph from R:</p>
<div class="highlight-{r}"><div class="highlight"><pre><span></span> graph.viz(model$symbol)
</pre></div>
</div>
<p><a class="reference external" href="https://github.com/dmlc/mxnet"><img src="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/knitr/graph.computation.png"/></a></p>
<div class="highlight-r"><div class="highlight"><pre><span></span> preds <span class="o">=</span> predict<span class="p">(</span>model<span class="p">,</span> test.x<span class="p">)</span>
</pre></div>
</div>
<div class="highlight-python"><div class="highlight"><pre><span></span> <span class="c1">## Auto detect layout of input matrix, use rowmajor.</span>
</pre></div>
</div>
<div class="highlight-r"><div class="highlight"><pre><span></span> pred.label <span class="o">=</span> <span class="kp">max.col</span><span class="p">(</span><span class="kp">t</span><span class="p">(</span>preds<span class="p">))</span><span class="m">-1</span>
<span class="kp">table</span><span class="p">(</span>pred.label<span class="p">,</span> test.y<span class="p">)</span>
</pre></div>
</div>
<div class="highlight-python"><div class="highlight"><pre><span></span> <span class="c1">## test.y</span>
<span class="c1">## pred.label 0 1</span>
<span class="c1">## 0 24 14</span>
<span class="c1">## 1 36 33</span>
</pre></div>
</div>
<p>Note for that for multi-class predictions, mxnet outputs <code class="docutils literal"><span class="pre">nclass</span></code> x <code class="docutils literal"><span class="pre">nexamples</span></code>, with each row corresponding to the probability of the class.</p>
</div>
<div class="section" id="regression">
<span id="regression"></span><h2>Regression<a class="headerlink" href="#regression" title="Permalink to this headline"></a></h2>
<p>Again, let us preprocess the data:</p>
<div class="highlight-r"><div class="highlight"><pre><span></span> data<span class="p">(</span>BostonHousing<span class="p">,</span> package<span class="o">=</span><span class="s">"mlbench"</span><span class="p">)</span>
train.ind <span class="o">=</span> <span class="kp">seq</span><span class="p">(</span><span class="m">1</span><span class="p">,</span> <span class="m">506</span><span class="p">,</span> <span class="m">3</span><span class="p">)</span>
train.x <span class="o">=</span> <span class="kp">data.matrix</span><span class="p">(</span>BostonHousing<span class="p">[</span>train.ind<span class="p">,</span> <span class="m">-14</span><span class="p">])</span>
train.y <span class="o">=</span> BostonHousing<span class="p">[</span>train.ind<span class="p">,</span> <span class="m">14</span><span class="p">]</span>
test.x <span class="o">=</span> <span class="kp">data.matrix</span><span class="p">(</span>BostonHousing<span class="p">[</span><span class="o">-</span>train.ind<span class="p">,</span> <span class="m">-14</span><span class="p">])</span>
test.y <span class="o">=</span> BostonHousing<span class="p">[</span><span class="o">-</span>train.ind<span class="p">,</span> <span class="m">14</span><span class="p">]</span>
</pre></div>
</div>
<p>Although we can use <code class="docutils literal"><span class="pre">mx.mlp</span></code> again to do regression by changing the <code class="docutils literal"><span class="pre">out_activation</span></code>, this time we are going to introduce a flexible way to configure neural networks in <code class="docutils literal"><span class="pre">mxnet</span></code>. Configuration is done by the “Symbol” system in <code class="docutils literal"><span class="pre">mxnet</span></code>. The Symbol system takes care of the links among nodes, activation, dropout ratio, etc. Configure a multi-layer neural network as follows:</p>
<div class="highlight-r"><div class="highlight"><pre><span></span> <span class="c1"># Define the input data</span>
data <span class="o"><-</span> mx.symbol.Variable<span class="p">(</span><span class="s">"data"</span><span class="p">)</span>
<span class="c1"># A fully connected hidden layer</span>
<span class="c1"># data: input source</span>
<span class="c1"># num_hidden: number of neurons in this hidden layer</span>
fc1 <span class="o"><-</span> mx.symbol.FullyConnected<span class="p">(</span>data<span class="p">,</span> num_hidden<span class="o">=</span><span class="m">1</span><span class="p">)</span>
<span class="c1"># Use linear regression for the output layer</span>
lro <span class="o"><-</span> mx.symbol.LinearRegressionOutput<span class="p">(</span>fc1<span class="p">)</span>
</pre></div>
</div>
<p>What matters for a regression task is mainly the last function. It enables the new network to optimize for squared loss. Now let’s train on this simple data set. In this configuration, we dropped the hidden layer so that the input layer is directly connected to the output layer.</p>
<p>Next, make prediction with this structure and other parameters with <code class="docutils literal"><span class="pre">mx.model.FeedForward.create</span></code>:</p>
<div class="highlight-r"><div class="highlight"><pre><span></span> mx.set.seed<span class="p">(</span><span class="m">0</span><span class="p">)</span>
model <span class="o"><-</span> mx.model.FeedForward.create<span class="p">(</span>lro<span class="p">,</span> X<span class="o">=</span>train.x<span class="p">,</span> y<span class="o">=</span>train.y<span class="p">,</span>
ctx<span class="o">=</span>mx.cpu<span class="p">(),</span> num.round<span class="o">=</span><span class="m">50</span><span class="p">,</span> array.batch.size<span class="o">=</span><span class="m">20</span><span class="p">,</span>
learning.rate<span class="o">=</span><span class="m">2e-6</span><span class="p">,</span> momentum<span class="o">=</span><span class="m">0.9</span><span class="p">,</span> eval.metric<span class="o">=</span>mx.metric.rmse<span class="p">)</span>
</pre></div>
</div>
<div class="highlight-python"><div class="highlight"><pre><span></span> <span class="c1">## Auto detect layout of input matrix, use rowmajor.</span>
<span class="c1">## Start training with 1 devices</span>
<span class="c1">## [1] Train-rmse=16.063282524034</span>
<span class="c1">## [2] Train-rmse=12.2792375712573</span>
<span class="c1">## [3] Train-rmse=11.1984634005885</span>
<span class="c1">## [4] Train-rmse=10.2645236892904</span>
<span class="c1">## [5] Train-rmse=9.49711005504284</span>
<span class="c1">## [6] Train-rmse=9.07733734175182</span>
<span class="c1">## [7] Train-rmse=9.07884450847991</span>
<span class="c1">## [8] Train-rmse=9.10463850277417</span>
<span class="c1">## [9] Train-rmse=9.03977049028532</span>
<span class="c1">## [10] Train-rmse=8.96870685004475</span>
<span class="c1">## [11] Train-rmse=8.93113287361574</span>
<span class="c1">## [12] Train-rmse=8.89937257821847</span>
<span class="c1">## [13] Train-rmse=8.87182096922953</span>
<span class="c1">## [14] Train-rmse=8.84476075083586</span>
<span class="c1">## [15] Train-rmse=8.81464673014974</span>
<span class="c1">## [16] Train-rmse=8.78672567900196</span>
<span class="c1">## [17] Train-rmse=8.76265872846474</span>
<span class="c1">## [18] Train-rmse=8.73946101419974</span>
<span class="c1">## [19] Train-rmse=8.71651926303267</span>
<span class="c1">## [20] Train-rmse=8.69457600919277</span>
<span class="c1">## [21] Train-rmse=8.67354928674563</span>
<span class="c1">## [22] Train-rmse=8.65328755392436</span>
<span class="c1">## [23] Train-rmse=8.63378039680078</span>
<span class="c1">## [24] Train-rmse=8.61488162586984</span>
<span class="c1">## [25] Train-rmse=8.5965105183022</span>
<span class="c1">## [26] Train-rmse=8.57868133563275</span>
<span class="c1">## [27] Train-rmse=8.56135851937663</span>
<span class="c1">## [28] Train-rmse=8.5444819772098</span>
<span class="c1">## [29] Train-rmse=8.52802114610432</span>
<span class="c1">## [30] Train-rmse=8.5119504512622</span>
<span class="c1">## [31] Train-rmse=8.49624261719241</span>
<span class="c1">## [32] Train-rmse=8.48087453238701</span>
<span class="c1">## [33] Train-rmse=8.46582689119887</span>
<span class="c1">## [34] Train-rmse=8.45107881002491</span>
<span class="c1">## [35] Train-rmse=8.43661331401712</span>
<span class="c1">## [36] Train-rmse=8.42241575909639</span>
<span class="c1">## [37] Train-rmse=8.40847217331365</span>
<span class="c1">## [38] Train-rmse=8.39476931796395</span>
<span class="c1">## [39] Train-rmse=8.38129658373974</span>
<span class="c1">## [40] Train-rmse=8.36804269059018</span>
<span class="c1">## [41] Train-rmse=8.35499817678397</span>
<span class="c1">## [42] Train-rmse=8.34215505742154</span>
<span class="c1">## [43] Train-rmse=8.32950441908131</span>
<span class="c1">## [44] Train-rmse=8.31703985777311</span>
<span class="c1">## [45] Train-rmse=8.30475363906755</span>
<span class="c1">## [46] Train-rmse=8.29264031506106</span>
<span class="c1">## [47] Train-rmse=8.28069372820073</span>
<span class="c1">## [48] Train-rmse=8.26890902770415</span>
<span class="c1">## [49] Train-rmse=8.25728089053853</span>
<span class="c1">## [50] Train-rmse=8.24580511500735</span>
</pre></div>
</div>
<p>It’s also easy to make a prediction and evaluate it:</p>
<div class="highlight-r"><div class="highlight"><pre><span></span> preds <span class="o">=</span> predict<span class="p">(</span>model<span class="p">,</span> test.x<span class="p">)</span>
</pre></div>
</div>
<div class="highlight-python"><div class="highlight"><pre><span></span> <span class="c1">## Auto detect layout of input matrix, use rowmajor..</span>
</pre></div>
</div>
<div class="highlight-r"><div class="highlight"><pre><span></span> <span class="kp">sqrt</span><span class="p">(</span><span class="kp">mean</span><span class="p">((</span>preds<span class="o">-</span>test.y<span class="p">)</span><span class="o">^</span><span class="m">2</span><span class="p">))</span>
</pre></div>
</div>
<div class="highlight-python"><div class="highlight"><pre><span></span> <span class="c1">## [1] 7.800502</span>
</pre></div>
</div>
<p>Currently, we have four predefined metrics: “accuracy”, “rmse”, “mae”, and “rmsle”. MXNet provides the interface for defining your own metrics:</p>
<div class="highlight-r"><div class="highlight"><pre><span></span> demo.metric.mae <span class="o"><-</span> mx.metric.custom<span class="p">(</span><span class="s">"mae"</span><span class="p">,</span> <span class="kr">function</span><span class="p">(</span>label<span class="p">,</span> pred<span class="p">)</span> <span class="p">{</span>
res <span class="o"><-</span> <span class="kp">mean</span><span class="p">(</span><span class="kp">abs</span><span class="p">(</span>label<span class="o">-</span>pred<span class="p">))</span>
<span class="kr">return</span><span class="p">(</span>res<span class="p">)</span>
<span class="p">})</span>
</pre></div>
</div>
<p>This is an example of the mean absolute error metric. Simply plug it into the training function:</p>
<div class="highlight-r"><div class="highlight"><pre><span></span> mx.set.seed<span class="p">(</span><span class="m">0</span><span class="p">)</span>
model <span class="o"><-</span> mx.model.FeedForward.create<span class="p">(</span>lro<span class="p">,</span> X<span class="o">=</span>train.x<span class="p">,</span> y<span class="o">=</span>train.y<span class="p">,</span>
ctx<span class="o">=</span>mx.cpu<span class="p">(),</span> num.round<span class="o">=</span><span class="m">50</span><span class="p">,</span> array.batch.size<span class="o">=</span><span class="m">20</span><span class="p">,</span>
learning.rate<span class="o">=</span><span class="m">2e-6</span><span class="p">,</span> momentum<span class="o">=</span><span class="m">0.9</span><span class="p">,</span> eval.metric<span class="o">=</span>demo.metric.mae<span class="p">)</span>
</pre></div>
</div>
<div class="highlight-python"><div class="highlight"><pre><span></span> <span class="c1">## Auto detect layout of input matrix, use rowmajor.</span>
<span class="c1">## Start training with 1 devices</span>
<span class="c1">## [1] Train-mae=13.1889538083225</span>
<span class="c1">## [2] Train-mae=9.81431959337658</span>
<span class="c1">## [3] Train-mae=9.21576419870059</span>
<span class="c1">## [4] Train-mae=8.38071537613869</span>
<span class="c1">## [5] Train-mae=7.45462437611487</span>
<span class="c1">## [6] Train-mae=6.93423301743136</span>
<span class="c1">## [7] Train-mae=6.91432357016537</span>
<span class="c1">## [8] Train-mae=7.02742733055105</span>
<span class="c1">## [9] Train-mae=7.00618194618469</span>
<span class="c1">## [10] Train-mae=6.92541576984028</span>
<span class="c1">## [11] Train-mae=6.87530243690643</span>
<span class="c1">## [12] Train-mae=6.84757369098564</span>
<span class="c1">## [13] Train-mae=6.82966501611388</span>
<span class="c1">## [14] Train-mae=6.81151759574811</span>
<span class="c1">## [15] Train-mae=6.78394182841811</span>
<span class="c1">## [16] Train-mae=6.75914719419347</span>
<span class="c1">## [17] Train-mae=6.74180388773481</span>
<span class="c1">## [18] Train-mae=6.725853071279</span>
<span class="c1">## [19] Train-mae=6.70932178215848</span>
<span class="c1">## [20] Train-mae=6.6928868798746</span>
<span class="c1">## [21] Train-mae=6.6769521329138</span>
<span class="c1">## [22] Train-mae=6.66184809505939</span>
<span class="c1">## [23] Train-mae=6.64754504809777</span>
<span class="c1">## [24] Train-mae=6.63358514060577</span>
<span class="c1">## [25] Train-mae=6.62027640889088</span>
<span class="c1">## [26] Train-mae=6.60738245232238</span>
<span class="c1">## [27] Train-mae=6.59505546771818</span>
<span class="c1">## [28] Train-mae=6.58346195800437</span>
<span class="c1">## [29] Train-mae=6.57285477783945</span>
<span class="c1">## [30] Train-mae=6.56259003960424</span>
<span class="c1">## [31] Train-mae=6.5527790788975</span>
<span class="c1">## [32] Train-mae=6.54353428422991</span>
<span class="c1">## [33] Train-mae=6.5344172368447</span>
<span class="c1">## [34] Train-mae=6.52557652526432</span>
<span class="c1">## [35] Train-mae=6.51697905850079</span>
<span class="c1">## [36] Train-mae=6.50847898812758</span>
<span class="c1">## [37] Train-mae=6.50014844106303</span>
<span class="c1">## [38] Train-mae=6.49207674844397</span>
<span class="c1">## [39] Train-mae=6.48412070125341</span>
<span class="c1">## [40] Train-mae=6.47650500999557</span>
<span class="c1">## [41] Train-mae=6.46893867486053</span>
<span class="c1">## [42] Train-mae=6.46142131653097</span>
<span class="c1">## [43] Train-mae=6.45395035048326</span>
<span class="c1">## [44] Train-mae=6.44652914123403</span>
<span class="c1">## [45] Train-mae=6.43916216409869</span>
<span class="c1">## [46] Train-mae=6.43183777381976</span>
<span class="c1">## [47] Train-mae=6.42455544223388</span>
<span class="c1">## [48] Train-mae=6.41731406417158</span>
<span class="c1">## [49] Train-mae=6.41011292926139</span>
<span class="c1">## [50] Train-mae=6.40312503493494</span>
</pre></div>
</div>
<p>Congratulations! You’ve learned the basics for using MXNet in R. To learn how to use MXNet’s advanced features, see the other tutorials.</p>
</div>
<div class="section" id="next-steps">
<span id="next-steps"></span><h2>Next Steps<a class="headerlink" href="#next-steps" title="Permalink to this headline"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference external" href="http://mxnet.io/tutorials/r/classifyRealImageWithPretrainedModel.html">Classify Real-World Images with Pre-trained Model</a></li>
<li class="toctree-l1"><a class="reference external" href="http://mxnet.io/tutorials/r/mnistCompetition.html">Handwritten Digits Classification Competition</a></li>
<li class="toctree-l1"><a class="reference external" href="http://mxnet.io/tutorials/r/charRnnModel.html">Character Language Model using RNN</a></li>
</ul>
</div>
</div>
</div>
<div class="container">
<div class="footer">
<p> © 2015-2017 DMLC. All rights reserved. </p>
</div>
</div>
</div>
<div aria-label="main navigation" class="sphinxsidebar rightsidebar" role="navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="../../index.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Develop a Neural Network with MXNet in Five Minutes</a><ul>
<li><a class="reference internal" href="#classification">Classification</a></li>
<li><a class="reference internal" href="#regression">Regression</a></li>
<li><a class="reference internal" href="#next-steps">Next Steps</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div> <!-- pagename != index -->
<script crossorigin="anonymous" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="../../_static/js/sidebar.js" type="text/javascript"></script>
<script src="../../_static/js/search.js" type="text/javascript"></script>
<script src="../../_static/js/navbar.js" type="text/javascript"></script>
<script src="../../_static/js/clipboard.min.js" type="text/javascript"></script>
<script src="../../_static/js/copycode.js" type="text/javascript"></script>
<script type="text/javascript">
$('body').ready(function () {
$('body').css('visibility', 'visible');
});
</script>
</div></body>
</html>