blob: 2e0a6d4c27b8690c182abea3118f516e38da93de [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>Symbolic Configuration and Execution in Pictures — 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="index.html">Python Documents</a></li>
<li class="toctree-l1"><a class="reference internal" href="../r/index.html">R Documents</a></li>
<li class="toctree-l1"><a class="reference internal" href="../julia/index.html">Julia Documents</a></li>
<li class="toctree-l1"><a class="reference internal" href="../c++/index.html">C++ Documents</a></li>
<li class="toctree-l1"><a class="reference internal" href="../scala/index.html">Scala Documents</a></li>
<li class="toctree-l1"><a class="reference internal" href="../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="../../tutorials/index.html">Tutorials</a></li>
</ul>
</div>
</div>
<div class="content">
<div class="section" id="symbolic-configuration-and-execution-in-pictures">
<span id="symbolic-configuration-and-execution-in-pictures"></span><h1>Symbolic Configuration and Execution in Pictures<a class="headerlink" href="#symbolic-configuration-and-execution-in-pictures" title="Permalink to this headline"></a></h1>
<p>This topic explains symbolic construction and execution in pictures.
We recommend that you also read <a class="reference internal" href="symbol.html"><em>Symbolic API</em></a>.</p>
<div class="section" id="compose-symbols">
<span id="compose-symbols"></span><h2>Compose Symbols<a class="headerlink" href="#compose-symbols" title="Permalink to this headline"></a></h2>
<p>Symbols are a description of the computation that you want to perform. The symbolic construction API generates the computation
graph that describes the computation. The following picture shows how you compose symbols to describe basic computations.</p>
<p><img alt="Symbol Compose" src="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/symbol/compose_basic.png"/></p>
<ul class="simple">
<li>The <code class="docutils literal"><span class="pre">mxnet.symbol.Variable</span></code> function creates argument nodes that represent input to the computation.</li>
<li>The symbol is overloaded with basic element-wise mathematical operations.</li>
</ul>
</div>
<div class="section" id="configure-neural-networks">
<span id="configure-neural-networks"></span><h2>Configure Neural Networks<a class="headerlink" href="#configure-neural-networks" title="Permalink to this headline"></a></h2>
<p>In addition to supporting fine-grained operations, MXNet provides a way to perform big operations that are analogous to layers in neural networks.
You can use operators to describe the configuration of a neural network.</p>
<p><img alt="Net Compose" src="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/symbol/compose_net.png"/></p>
</div>
<div class="section" id="example-of-a-multi-input-network">
<span id="example-of-a-multi-input-network"></span><h2>Example of a Multi-Input Network<a class="headerlink" href="#example-of-a-multi-input-network" title="Permalink to this headline"></a></h2>
<p>The following example shows how to configure multiple input neural networks.</p>
<p><img alt="Multi Input" src="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/symbol/compose_multi_in.png"/></p>
</div>
<div class="section" id="bind-and-execute-symbol">
<span id="bind-and-execute-symbol"></span><h2>Bind and Execute Symbol<a class="headerlink" href="#bind-and-execute-symbol" title="Permalink to this headline"></a></h2>
<p>When you need to execute a symbol graph, you call the bind function to bind <code class="docutils literal"><span class="pre">NDArrays</span></code> to the argument nodes
in order to obtain an <code class="docutils literal"><span class="pre">Executor</span></code>.</p>
<p><img alt="Bind" src="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/symbol/bind_basic.png"/></p>
<p>To get the output results, given the bound NDArrays as input, you can call <code class="docutils literal"><span class="pre">Executor.Forward</span></code>.</p>
<p><img alt="Forward" src="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/symbol/executor_forward.png"/></p>
</div>
<div class="section" id="bind-multiple-outputs">
<span id="bind-multiple-outputs"></span><h2>Bind Multiple Outputs<a class="headerlink" href="#bind-multiple-outputs" title="Permalink to this headline"></a></h2>
<p>To group symbols, then bind them to
get the outputs of both, use <code class="docutils literal"><span class="pre">mx.symbol.Group</span></code>.</p>
<p><img alt="MultiOut" src="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/symbol/executor_multi_out.png"/></p>
<p>Remember: Bind only what you need, so that the system can perform more optimizations.</p>
</div>
<div class="section" id="calculate-the-gradient">
<span id="calculate-the-gradient"></span><h2>Calculate the Gradient<a class="headerlink" href="#calculate-the-gradient" title="Permalink to this headline"></a></h2>
<p>In the bind function, you can specify NDArrays that will hold gradients. Calling <code class="docutils literal"><span class="pre">Executor.backward</span></code> after <code class="docutils literal"><span class="pre">Executor.forward</span></code> gives you the corresponding gradients.</p>
<p><img alt="Gradient" src="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/symbol/executor_backward.png"/></p>
</div>
<div class="section" id="simple-bind-interface-for-neural-networks">
<span id="simple-bind-interface-for-neural-networks"></span><h2>Simple Bind Interface for Neural Networks<a class="headerlink" href="#simple-bind-interface-for-neural-networks" title="Permalink to this headline"></a></h2>
<p>It can be tedious to pass the argument NDArrays to the bind function, especially when you are binding a big
graph. <code class="docutils literal"><span class="pre">Symbol.simple_bind</span></code> provides a way to simplify
the procedure. You need to specify only input data shapes. The function allocates the arguments, and binds
the Executor for you.</p>
<p><img alt="SimpleBind" src="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/symbol/executor_simple_bind.png"/></p>
</div>
<div class="section" id="auxiliary-states">
<span id="auxiliary-states"></span><h2>Auxiliary States<a class="headerlink" href="#auxiliary-states" title="Permalink to this headline"></a></h2>
<p>Auxiliary states are just like arguments, except that you can’t take the gradient of them. Although auxiliary states might not be part of the computation, they can be helpful for tracking. You can pass auxiliary states in the same way that you pass arguments.</p>
<p><img alt="SimpleBind" src="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/symbol/executor_aux_state.png"/></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>
<p>See <a class="reference internal" href="symbol.html"><em>Symbolic API</em></a> and <a class="reference internal" href="index.html"><em>Python Documentation</em></a>.</p>
</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="#">Symbolic Configuration and Execution in Pictures</a><ul>
<li><a class="reference internal" href="#compose-symbols">Compose Symbols</a></li>
<li><a class="reference internal" href="#configure-neural-networks">Configure Neural Networks</a></li>
<li><a class="reference internal" href="#example-of-a-multi-input-network">Example of a Multi-Input Network</a></li>
<li><a class="reference internal" href="#bind-and-execute-symbol">Bind and Execute Symbol</a></li>
<li><a class="reference internal" href="#bind-multiple-outputs">Bind Multiple Outputs</a></li>
<li><a class="reference internal" href="#calculate-the-gradient">Calculate the Gradient</a></li>
<li><a class="reference internal" href="#simple-bind-interface-for-neural-networks">Simple Bind Interface for Neural Networks</a></li>
<li><a class="reference internal" href="#auxiliary-states">Auxiliary States</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>