<!DOCTYPE html>

<!---
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
    http://www.apache.org/licenses/LICENSE-2.0
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->

<html lang=" en"><head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link href="/versions/master/assets/img/mxnet-icon.png" rel="icon" type="image/png"><!-- Begin Jekyll SEO tag v2.6.1 -->
<title>Docs | Apache MXNet</title>
<meta name="generator" content="Jekyll v4.0.0" />
<meta property="og:title" content="Docs" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="A flexible and efficient library for deep learning." />
<meta property="og:description" content="A flexible and efficient library for deep learning." />
<link rel="canonical" href="https://mxnet.apache.org/versions/master/api/" />
<meta property="og:url" content="https://mxnet.apache.org/versions/master/api/" />
<meta property="og:site_name" content="Apache MXNet" />
<script type="application/ld+json">
{"url":"https://mxnet.apache.org/versions/master/api/","headline":"Docs","description":"A flexible and efficient library for deep learning.","@type":"WebPage","@context":"https://schema.org"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/versions/master/assets/docsearch.min.css" /><link rel="stylesheet" href="/versions/master/assets/main.css"><link type="application/atom+xml" rel="alternate" href="https://mxnet.apache.org/versions/master/feed.xml" title="Apache MXNet" /><!-- Matomo -->
<script>
  var _paq = window._paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
  /* We explicitly disable cookie tracking to avoid privacy issues */
  _paq.push(['disableCookies']);
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="https://analytics.apache.org/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '23']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Matomo Code -->

<script src="/versions/master/assets/js/jquery-3.3.1.min.js"></script>
    <script src="/versions/master/assets/js/docsearch.min.js"></script><script src="/versions/master/assets/js/globalSearch.js" defer></script>
  <script src="/versions/master/assets/js/clipboard.js" defer></script>
  <script src="/versions/master/assets/js/copycode.js" defer></script></head>
<body><header class="site-header" role="banner">

  <script>
    $(document).ready(function () {

      // HEADER OPACITY LOGIC

      function opacity_header() {
        var value = "rgba(4,140,204," + ($(window).scrollTop() / 300 + 0.4) + ")"
        $('.site-header').css("background-color", value)
      }

      $(window).scroll(function () {
        opacity_header()
      })
      opacity_header();

      // MENU SELECTOR LOGIC
      $('.page-link').each( function () {
        if (window.location.href.includes(this.href)) {
          $(this).addClass("page-current");
        }
      });
    })
  </script>
  <div class="wrapper">
    <a class="site-title" rel="author" href="/versions/master/"><img
            src="/versions/master/assets/img/mxnet_logo.png" class="site-header-logo"></a>
    <nav class="site-nav">
      <input type="checkbox" id="nav-trigger" class="nav-trigger"/>
      <label for="nav-trigger">
          <span class="menu-icon">
            <svg viewBox="0 0 18 15" width="18px" height="15px">
              <path d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.032C17.335,0,18,0.665,18,1.484L18,1.484z M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.032C17.335,6.031,18,6.696,18,7.516L18,7.516z M18,13.516C18,14.335,17.335,15,16.516,15H1.484 C0.665,15,0,14.335,0,13.516l0,0c0-0.82,0.665-1.483,1.484-1.483h15.032C17.335,12.031,18,12.695,18,13.516L18,13.516z"/>
            </svg>
          </span>
      </label>
      <div class="gs-search-border">
        <div id="gs-search-icon"></div>
        <form id="global-search-form">
          <input id="global-search" type="text" title="Search" placeholder="Search" />
          <div id="global-search-dropdown-container">
            <button class="gs-current-version btn" type="button" data-toggle="dropdown">
                <span id="gs-current-version-label">master</span>
                <svg class="gs-dropdown-caret" viewBox="0 0 32 32" class="icon icon-caret-bottom" aria-hidden="true">
                    <path class="dropdown-caret-path" d="M24 11.305l-7.997 11.39L8 11.305z"></path>
                </svg>
            </button>
            <ul class="gs-opt-group gs-version-dropdown">
              
                
                  <li class="gs-opt gs-versions active">master</li>
                
              
                
                  <li class="gs-opt gs-versions">1.9.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.8.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.7.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.6.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.5.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.4.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.3.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.2.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.1.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.0.0</li>
                
              
                
                  <li class="gs-opt gs-versions">0.12.1</li>
                
              
                
                  <li class="gs-opt gs-versions">0.11.0</li>
                
              
            </ul>
        </div>
          <span id="global-search-close">x</span>
        </form>
      </div>
      <div class="trigger">
        <div id="global-search-mobile-border">
          <div id="gs-search-icon-mobile"></div>
          <input id="global-search-mobile" placeholder="Search..." type="text"/>
          <div id="global-search-dropdown-container-mobile">
            <button class="gs-current-version-mobile btn" type="button" data-toggle="dropdown">
                <svg class="gs-dropdown-caret" viewBox="0 0 32 32" class="icon icon-caret-bottom" aria-hidden="true">
                    <path class="dropdown-caret-path" d="M24 11.305l-7.997 11.39L8 11.305z"></path>
                </svg>
            </button>
            <ul class="gs-opt-group gs-version-dropdown-mobile">
              
                
                  <li class="gs-opt gs-versions active">master</li>
                
              
                
                  <li class="gs-opt gs-versions">1.9.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.8.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.7.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.6.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.5.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.4.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.3.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.2.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.1.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.0.0</li>
                
              
                
                  <li class="gs-opt gs-versions">0.12.1</li>
                
              
                
                  <li class="gs-opt gs-versions">0.11.0</li>
                
              
            </ul>
        </div>
        </div>
        <a class="page-link" href="/versions/master/get_started">Get Started</a>
        <a class="page-link" href="/versions/master/features">Features</a>
        <a class="page-link" href="/versions/master/ecosystem">Ecosystem</a>
        <a class="page-link" href="/versions/master/api">Docs & Tutorials</a>
        <a class="page-link" href="/versions/master/trusted_by">Trusted By</a>
        <a class="page-link" href="https://github.com/apache/mxnet">GitHub</a>
        <div class="dropdown" style="min-width:100px">
          <span class="dropdown-header">Apache
            <svg class="dropdown-caret" viewBox="0 0 32 32" class="icon icon-caret-bottom" aria-hidden="true"><path class="dropdown-caret-path" d="M24 11.305l-7.997 11.39L8 11.305z"></path></svg>
          </span>
          <div class="dropdown-content" style="min-width:250px">
            <a href="https://www.apache.org/foundation/">Apache Software Foundation</a>
            <a href="https://www.apache.org/licenses/">License</a>
            <a href="/versions/master/api/faq/security.html">Security</a>
            <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy</a>
            <a href="https://www.apache.org/events/current-event">Events</a>
            <a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
            <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
          </div>
        </div>
        <div class="dropdown">
          <span class="dropdown-header">master
            <svg class="dropdown-caret" viewBox="0 0 32 32" class="icon icon-caret-bottom" aria-hidden="true"><path class="dropdown-caret-path" d="M24 11.305l-7.997 11.39L8 11.305z"></path></svg>
          </span>
          <div class="dropdown-content">
            
              
                <a class="dropdown-option-active" href="/">master</a>
              
            
              
                <a href="/versions/1.9.1/">1.9.1</a>
              
            
              
                <a href="/versions/1.8.0/">1.8.0</a>
              
            
              
                <a href="/versions/1.7.0/">1.7.0</a>
              
            
              
                <a href="/versions/1.6.0/">1.6.0</a>
              
            
              
                <a href="/versions/1.5.0/">1.5.0</a>
              
            
              
                <a href="/versions/1.4.1/">1.4.1</a>
              
            
              
                <a href="/versions/1.3.1/">1.3.1</a>
              
            
              
                <a href="/versions/1.2.1/">1.2.1</a>
              
            
              
                <a href="/versions/1.1.0/">1.1.0</a>
              
            
              
                <a href="/versions/1.0.0/">1.0.0</a>
              
            
              
                <a href="/versions/0.12.1/">0.12.1</a>
              
            
              
                <a href="/versions/0.11.0/">0.11.0</a>
              
            
          </div>
        </div>
      </div>
    </nav>
  </div>
</header>
<main class="page-content" aria-label="Content">
    <script>

</script>
<article class="post">

    <header class="post-header wrapper">
        <h1 class="post-title">Docs</h1>
        <h3>Documentation for the supported language bindings</h3><a style="float:left; margin-top:20px" href="/versions/master/get_started" class="btn btn-action">Get Started
            <span class="span-accented">›</span></a></header>

    <div class="post-content">
        <div class="wrapper">
            <!--- Licensed to the Apache Software Foundation (ASF) under one -->
<!--- or more contributor license agreements.  See the NOTICE file -->
<!--- distributed with this work for additional information -->
<!--- regarding copyright ownership.  The ASF licenses this file -->
<!--- to you under the Apache License, Version 2.0 (the -->
<!--- "License"); you may not use this file except in compliance -->
<!--- with the License.  You may obtain a copy of the License at -->

<!---   http://www.apache.org/licenses/LICENSE-2.0 -->

<!--- Unless required by applicable law or agreed to in writing, -->
<!--- software distributed under the License is distributed on an -->
<!--- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -->
<!--- KIND, either express or implied.  See the License for the -->
<!--- specific language governing permissions and limitations -->
<!--- under the License. --><h2>Python API</h2>
    <div class="row docs-hero">
      <div class="col-4 docs-hero-left">
        <div class="docs-card">
            <div class="docs-logo-container">
                <img class="docs-logo-image" src="/versions/master/assets/img/python_logo.svg">
            </div>
            <div class="docs-action-btn">
              <a href="/versions/master/api/python.html"> <img src="/versions/master/assets/img/compass.svg" class="docs-logo-docs">Python Guide  <span class="span-accented">›</span></a>
            </div>
            <div class="docs-action-btn">
              <a href="/versions/master/api/python/docs/tutorials"> <img src="/versions/master/assets/img/video-tutorial.svg" class="docs-logo-docs">Python Tutorials  <span class="span-accented">›</span></a>
            </div>
            <div class="docs-action-btn">
              <a href="/versions/master/api/python/docs/api"> <img src="/versions/master/assets/img/api.svg" class="docs-logo-docs">Python API Reference  <span class="span-accented">›</span></a>
            </div>
        </div>
      </div>

    <div class="col-8 docs-hero-right">
        <h4>Python-first API</h4>
        <p>Apache MXNet provides a comprehensive and flexible Python API to serve a broad community of developers with different levels of experience and wide ranging requirements. Current efforts are focused on the
        <a href="/versions/master/api/python/docs/api"></a>Gluon API. Gluon provides a clear, concise, and simple API for deep learning. It makes it easy to prototype, build, and train deep learning models without sacrificing training speed.</p>
        <p>You can checkout the <a href="/versions/master/ecosystem">rich ecosystem</a> built around Apache MXNet Gluon, including <a href="https://d2l.ai">D2L.ai</a>, <a href="https://gluon-cv.mxnet.io">GluonCV</a>,
        <a href="https://gluon-nlp.mxnet.io">GluonNLP</a> and <a href="https://gluon-ts.mxnet.io">GluonTS</a>.</p>
        <p>While most of the usability improvement around training are focused on the python API, the performance of Apache MXNet is accessible through a variety of different language bindings, checkout their respective API and guides below!</p>
      </div>

    </div><h2>Other Bindings</h2>
<div class="row"><div class="col-4">
      <div class="docs-card">
          <div class="docs-logo-container">
              <img class="docs-logo-image" src="/versions/master/assets/img/cpp_logo.svg">
          </div>
          <div class="docs-action-btn">
            <a href="/versions/master/api/cpp.html"> <img src="/versions/master/assets/img/compass.svg" class="docs-logo-docs">C/C++ Guide  <span class="span-accented">›</span></a>
          </div>
          <div class="docs-action-btn">
            <a href="/versions/master/api/cpp/docs/tutorials"> <img src="/versions/master/assets/img/video-tutorial.svg" class="docs-logo-docs">C/C++ Tutorials  <span class="span-accented">›</span></a>
          </div>
          <div class="docs-action-btn">
            <a href="/versions/master/api/cpp/docs/api"> <img src="/versions/master/assets/img/api.svg" class="docs-logo-docs">C/C++ API Reference  <span class="span-accented">›</span></a>
          </div>
      </div>
  </div><div class="language-binding-banner">
    <h4>Call for Contribution</h4>
    The Clojure, Java, Julia, R, and Scala language bindings of <a href="/versions/1.9.1/api">MXNet v1.x</a> were removed in v2.x due to some <a href="https://github.com/apache/incubator-mxnet/issues/17676">C APIs being deprecated</a> and the bindings rely on the deprecated APIs. You can still use these language bindings in v1.x.
    MXNet's new C APIs in v2.x can be used to reestablish your preferred language binding. Your contribution is welcome!
  </div>
</div>
</div> <!-- closing outer wrapper -->
<div class="docs-architecture">
    <div class="wrapper">
        <h2>Apache MXNet Architecture</h2>
        <p>
        Building a high-performance deep learning library
        requires many systems-level design decisions.
        In this design note, we share the rationale
        for the specific choices made when designing MXNet.
        We imagine that these insights may be useful
        to both deep learning practitioners
        and builders of other deep learning systems.
        </p>
        <h4>Deep Learning System Design Concepts</h4>
        <p>
        The following pages address general design concepts for deep learning systems.
        Mainly, they focus on the following 3 areas:
        abstraction, optimization, and trade-offs between efficiency and flexibility.
        Additionally, we provide an overview of the complete MXNet system.
        </p>
        <ul><li><a href="/versions/master/api/architecture/exception_handling">Exception Handling in Apache MXNet</a></li><li><a href="/versions/master/api/architecture/note_data_loading">Efficient Data Loaders</a></li><li><a href="/versions/master/api/architecture/note_engine">Dependency Engine</a></li><li><a href="/versions/master/api/architecture/note_memory">Memory Consumption</a></li><li><a href="/versions/master/api/architecture/overview">Apache MXNet System Architecture</a></li><li><a href="/versions/master/api/architecture/program_model">Deep Learning Programming Paradigm</a></li></ul>
    </div>
</div>
<div class="docs-dev-guide">
  <div class="wrapper">
      <h2>Developer Guide</h2>
      <ul><li><a href="/versions/master/api/dev-guide/github_contribution_and_PR_verification_tips">GitHub contribution and PR verification tips</a></li><li><a href="/versions/master/api/dev-guide/debugging_and_performance_optimization_tips">Debugging and performance optimization tips</a></li><li><a href="/versions/master/api/dev-guide/examine_forward_results_with_hooks">Examine forward results with hooks</a></li><li><a href="/versions/master/api/dev-guide/exception_handing_and_custom_error_types">Exception handing and custom error types</a></li><li><a href="/versions/master/api/dev-guide/profiling">Profiling</a></li></ul>
  </div>
</div>
<div class="docs-faq">
    <div class="wrapper">
        <h2>FAQ</h2>
        <ul><h3>Deployment Environments</h3><li><a href="/versions/master/api/faq/cloud">How to run MXNet on AWS?</a></li><li><a href="/versions/master/api/faq/distributed_training">How to do distributed training using MXNet on AWS?</a></li><li><a href="/versions/master/api/faq/env_var">What are MXNet environment variables?</a></li><li><a href="/versions/master/api/faq/s3_integration">How to use data from S3 for training?</a></li><br><h3>Model</h3><li><a href="/versions/master/api/faq/model_parallel_lstm">How can I train using multiple GPUs with model parallelism?</a></li><br><h3>Speed</h3><li><a href="/versions/master/api/faq/float16">How do I use mixed precision (float16) with MXNet or Gluon?</a></li><li><a href="/versions/master/api/faq/gradient_compression">How do I use gradient compression with distributed training?</a></li><li><a href="/versions/master/api/faq/perf">What are the best setup and data-handling tips and tricks for improving speed?</a></li><li><a href="/versions/master/api/faq/recordio">How can I create a .rec dataset ?</a></li><br><h3>Security</h3><li><a href="/versions/master/api/faq/security">How to run MXNet securely?</a></li><br><h3>Extend and Contribute to Apache MXNet</h3><br></ul>
    </div>
</div>
<div> <!-- reopening to close wrapper -->

        </div>
    </div>

</article>

</main><footer class="site-footer h-card">
    <div class="wrapper">
        <div class="row">
            <div class="col-4">
                <h4 class="footer-category-title">Resources</h4>
                <ul class="contact-list">
                    <li><a href="/versions/master/community#stay-connected">Mailing lists</a></li>
                    <li><a href="/versions/master/community#github-issues">Github Issues</a></li>
                    <li><a href="https://github.com/apache/mxnet/projects">Projects</a></li>
                    <li><a href="https://cwiki.apache.org/confluence/display/MXNET/Apache+MXNet+Home">Developer Wiki</a></li>
                    <li><a href="https://discuss.mxnet.io">Forum</a></li>
                    <li><a href="/versions/master/community">Contribute To MXNet</a></li>
                </ul>
            </div>

            <div class="col-4"><ul class="social-media-list"><li><a href="https://github.com/apache/mxnet"><svg class="svg-icon"><use xlink:href="/versions/master/assets/minima-social-icons.svg#github"></use></svg> <span class="username">apache/mxnet</span></a></li><li><a href="https://www.twitter.com/apachemxnet"><svg class="svg-icon"><use xlink:href="/versions/master/assets/minima-social-icons.svg#twitter"></use></svg> <span class="username">apachemxnet</span></a></li><li><a href="https://youtube.com/apachemxnet"><svg class="svg-icon"><use xlink:href="/versions/master/assets/minima-social-icons.svg#youtube"></use></svg> <span class="username">apachemxnet</span></a></li></ul>
</div>

            <div class="col-4 footer-text">
                <p>A flexible and efficient library for deep learning.</p>
            </div>
        </div>
    </div>
</footer>
<footer class="site-footer2">
    <div class="wrapper">
        <div class="row">
            <div class="col-3">
                <img src="/versions/master/assets/img/asf_logo.svg" class="footer-logo col-2">
            </div>
            <div class="footer-bottom-warning col-9">
                </p><p>"Copyright © 2017-2022, The Apache Software Foundation. Licensed under the Apache License, Version 2.0. Apache MXNet, MXNet, Apache, the Apache
                    feather, and the Apache MXNet project logo are either registered trademarks or trademarks of the
                    Apache Software Foundation."</p>
            </div>
        </div>
    </div>
</footer>




</body>

</html>
