blob: 7761da7b530b41ec14bedbaad1c18e0344c2a007 [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Train CNN over Cifar-10 &mdash; singa 2.0.0 documentation</title>
<script type="text/javascript" src="../../../_static/js/modernizr.min.js"></script>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../../',
VERSION:'2.0.0',
LANGUAGE:'None',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt'
};
</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="../../../_static/js/theme.js"></script>
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="Train Char-RNN over plain text" href="../char-rnn/README.html" />
<link rel="prev" title="Model Zoo" href="../index.html" />
<link href="../../../_static/style.css" rel="stylesheet" type="text/css">
<!--link href="../../../_static/fontawesome-all.min.css" rel="stylesheet" type="text/css"-->
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css"
integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous">
<style>
.fa:hover {
opacity: 0.7;
}
.fab:hover {
opacity: 0.7;
}
</style>
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../../index.html" class="icon icon-home"> singa
<img src="../../../_static/singa.png" class="logo" alt="Logo"/>
</a>
<div class="version">
latest
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Documentation</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../../installation.html">Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../software_stack.html">Software Stack</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../device.html">Device</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../tensor.html">Tensor</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../autograd.html">Autograd in Singa</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../onnx.html">ONNX</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../benchmark.html">Benchmark for Distributed training</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../index.html">Model Zoo</a><ul class="current">
<li class="toctree-l3 current"><a class="current reference internal" href="#">Train CNN over Cifar-10</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#instructions">Instructions</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../char-rnn/README.html">Train Char-RNN over plain text</a></li>
<li class="toctree-l3"><a class="reference internal" href="../mnist/README.html">Train a RBM model against MNIST dataset</a></li>
<li class="toctree-l3"><a class="reference internal" href="../imagenet/alexnet/README.html">Train AlexNet over ImageNet</a></li>
<li class="toctree-l3"><a class="reference internal" href="../imagenet/densenet/README.html">Image Classification using DenseNet</a></li>
<li class="toctree-l3"><a class="reference internal" href="../imagenet/googlenet/README.html">Image Classification using GoogleNet</a></li>
<li class="toctree-l3"><a class="reference internal" href="../imagenet/inception/README.html">Image Classification using Inception V4</a></li>
<li class="toctree-l3"><a class="reference internal" href="../imagenet/resnet/README.html">Image Classification using Residual Networks</a></li>
<li class="toctree-l3"><a class="reference internal" href="../imagenet/vgg/README.html">Image Classification using VGG</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../downloads.html">Download SINGA</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../security.html">Security</a></li>
</ul>
<p class="caption"><span class="caption-text">Development</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../develop/contribute-code.html">How to Contribute Code</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../develop/contribute-docs.html">How to Contribute to Documentation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../develop/how-to-release.html">How to prepare a release</a></li>
</ul>
<p class="caption"><span class="caption-text">Community</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../community/source-repository.html">Source Repository</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../community/mail-lists.html">Project Mailing Lists</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../community/issue-tracking.html">Issue Tracking</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../community/team-list.html">The SINGA Team</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../../index.html">singa</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../../index.html">Docs</a> &raquo;</li>
<li><a href="../../index.html">Documentation</a> &raquo;</li>
<li><a href="../index.html">Model Zoo</a> &raquo;</li>
<li>Train CNN over Cifar-10</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<!--
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.
--><div class="section" id="train-cnn-over-cifar-10">
<h1>Train CNN over Cifar-10<a class="headerlink" href="#train-cnn-over-cifar-10" title="Permalink to this headline"></a></h1>
<p>Convolution neural network (CNN) is a type of feed-forward artificial neural
network widely used for image and video classification. In this example, we
will train three deep CNN models to do image classification for the CIFAR-10 dataset,</p>
<ol class="simple">
<li><a class="reference external" href="https://code.google.com/p/cuda-convnet/source/browse/trunk/example-layers/layers-18pct.cfg">AlexNet</a>
the best validation accuracy (without data augmentation) we achieved was about 82%.</li>
<li><a class="reference external" href="http://torch.ch/blog/2015/07/30/cifar.html">VGGNet</a>, the best validation accuracy (without data augmentation) we achieved was about 89%.</li>
<li><a class="reference external" href="https://github.com/facebook/fb.resnet.torch">ResNet</a>, the best validation accuracy (without data augmentation) we achieved was about 83%.</li>
<li><a class="reference external" href="https://github.com/BVLC/caffe/tree/master/examples/cifar10">Alexnet from Caffe</a>, SINGA is able to convert model from Caffe seamlessly.</li>
</ol>
<div class="section" id="instructions">
<h2>Instructions<a class="headerlink" href="#instructions" title="Permalink to this headline"></a></h2>
<div class="section" id="singa-installation">
<h3>SINGA installation<a class="headerlink" href="#singa-installation" title="Permalink to this headline"></a></h3>
<p>Users can compile and install SINGA from source or install the Python version.
The code can ran on both CPU and GPU. For GPU training, CUDA and CUDNN (V4 or V5)
are required. Please refer to the installation page for detailed instructions.</p>
</div>
<div class="section" id="data-preparation">
<h3>Data preparation<a class="headerlink" href="#data-preparation" title="Permalink to this headline"></a></h3>
<p>The binary Cifar-10 dataset could be downloaded by</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">download_data</span><span class="o">.</span><span class="n">py</span> <span class="nb">bin</span>
</pre></div>
</div>
<p>The Python version could be downloaded by</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">download_data</span><span class="o">.</span><span class="n">py</span> <span class="n">py</span>
</pre></div>
</div>
</div>
<div class="section" id="training">
<h3>Training<a class="headerlink" href="#training" title="Permalink to this headline"></a></h3>
<p>There are four training programs</p>
<ol>
<li><p class="first">train.py. The following command would train the VGG model using the python
version of the Cifar-10 dataset in &#8216;cifar-10-batches-py&#8216; folder.</p>
<div class="highlight-default"><div class="highlight"><pre><span></span> <span class="n">python</span> <span class="n">train</span><span class="o">.</span><span class="n">py</span> <span class="n">vgg</span> <span class="n">cifar</span><span class="o">-</span><span class="mi">10</span><span class="o">-</span><span class="n">batches</span><span class="o">-</span><span class="n">py</span>
</pre></div>
</div>
<p>To train other models, please replace &#8216;vgg&#8216; to &#8216;alexnet&#8216;, &#8216;resnet&#8216; or &#8216;caffe&#8216;,
where &#8216;caffe&#8216; refers to the alexnet model converted from Caffe. By default
the training would run on a CudaGPU device, to run it on CppCPU, add an additional
argument</p>
<div class="highlight-default"><div class="highlight"><pre><span></span> <span class="n">python</span> <span class="n">train</span><span class="o">.</span><span class="n">py</span> <span class="n">vgg</span> <span class="n">cifar</span><span class="o">-</span><span class="mi">10</span><span class="o">-</span><span class="n">batches</span><span class="o">-</span><span class="n">py</span> <span class="o">--</span><span class="n">use_cpu</span>
</pre></div>
</div>
</li>
<li><p class="first">alexnet.cc. It trains the AlexNet model using the CPP APIs on a CudaGPU,</p>
<div class="highlight-default"><div class="highlight"><pre><span></span> <span class="o">./</span><span class="n">run</span><span class="o">.</span><span class="n">sh</span>
</pre></div>
</div>
</li>
<li><p class="first">alexnet-parallel.cc. It trains the AlexNet model using the CPP APIs on two CudaGPU devices.
The two devices run synchronously to compute the gradients of the mode parameters, which are
averaged on the host CPU device and then be applied to update the parameters.</p>
<div class="highlight-default"><div class="highlight"><pre><span></span> <span class="o">./</span><span class="n">run</span><span class="o">-</span><span class="n">parallel</span><span class="o">.</span><span class="n">sh</span>
</pre></div>
</div>
</li>
<li><p class="first">vgg-parallel.cc. It trains the VGG model using the CPP APIs on two CudaGPU devices similar to alexnet-parallel.cc.</p>
</li>
</ol>
</div>
<div class="section" id="prediction">
<h3>Prediction<a class="headerlink" href="#prediction" title="Permalink to this headline"></a></h3>
<p>predict.py includes the prediction function</p>
<div class="highlight-default"><div class="highlight"><pre><span></span> <span class="k">def</span> <span class="nf">predict</span><span class="p">(</span><span class="n">net</span><span class="p">,</span> <span class="n">images</span><span class="p">,</span> <span class="n">dev</span><span class="p">,</span> <span class="n">topk</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
</pre></div>
</div>
<p>The net is created by loading the previously trained model; Images consist of
a numpy array of images (one row per image); dev is the training device, e.g.,
a CudaGPU device or the host CppCPU device; It returns the topk labels for each instance.</p>
<p>The predict.py file&#8216;s main function provides an example of using the pre-trained alexnet model to do prediction for new images.
The &#8216;model.bin&#8216; file generated by the training program should be placed at the cifar10 folder to run</p>
<div class="highlight-default"><div class="highlight"><pre><span></span> <span class="n">python</span> <span class="n">predict</span><span class="o">.</span><span class="n">py</span>
</pre></div>
</div>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../char-rnn/README.html" class="btn btn-neutral float-right" title="Train Char-RNN over plain text" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="../index.html" class="btn btn-neutral float-left" title="Model Zoo" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2019 The Apache Software Foundation. All rights reserved. Apache SINGA, Apache, the Apache feather logo, and the Apache SINGA project logos are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> singa </span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Languages</dt>
<dd><a href="../../.././index.html">English</a></dd>
<dd><a href="../../.././zh/index.html">中文</a></dd>
</dl>
<dl>
<dt>Versions</dt>
<dd><a href="http://singa.apache.org/v0.3.0/">0.3</a></dd>
<dd><a href="http://singa.apache.org/v1.1.0/">1.1</a></dd>
</dl>
</div>
<a href="http://www.apache.org"
style="color:lightblue;padding: 5px; font-size: 10px; text-align: center; text-decoration: none; margin: 5px 2px;">Foundation</a>
<a href="http://www.apache.org/events/current-event"
style="color:lightblue;padding: 5px; font-size: 10px; text-align: center; text-decoration: none; margin: 5px 2px;">Events</a>
<a href="http://www.apache.org/foundation/thanks.html"
style="color:lightblue;padding: 5px; font-size: 10px; text-align: center; text-decoration: none; margin: 5px 2px;">Thanks</a>
<a href="http://www.apache.org/foundation/sponsorship.html"
style="color:lightblue;padding: 5px; font-size: 10px; text-align: center; text-decoration: none; margin: 5px 2px;">Sponsorship</a>
<a href="http://www.apache.org/licenses/"
style="color:lightblue;padding: 5px; font-size: 10px; text-align: center; text-decoration: none; margin: 5px 2px;">License</a>
<br>
<a href="https://github.com/apache/singa" class="fa fa-github"
style="padding: 10px; font-size: 20px; width: 30px; text-align: center; text-decoration: none; margin: 5px 2px;"></a>
<a href="https://aws.amazon.com/marketplace/seller-profile?id=5bcac385-12c4-4802-aec7-351e09b77b4c"
class="fab fa-aws"
style="padding: 10px; font-size: 20px; width: 30px; text-align: center; text-decoration: none; margin: 5px 2px;"></a>
<a href="https://hub.docker.com/r/apache/singa/" class="fab fa-docker"
style="padding: 10px; font-size: 20px; width: 30px; text-align: center; text-decoration: none; margin: 5px 2px;"></a>
<a href="https://www.linkedin.com/groups/13550034" class="fa fa-linkedin"
style="padding: 10px; font-size: 20px; width: 30px; text-align: center; text-decoration: none; margin: 5px 2px;"></a>
<a href="https://twitter.com/ApacheSinga" class="fa fa-twitter"
style="padding: 10px; font-size: 20px; width: 30px; text-align: center; text-decoration: none; margin: 5px 2px;"></a>
<a href="https://www.facebook.com/Apache-SINGA-347284219056544/" class="fa fa-facebook"
style="padding: 10px; font-size: 20px; width: 30px; text-align: center; text-decoration: none; margin: 5px 2px;"></a>
<a href="https://www.researchgate.net/project/Apache-SINGA" class="fab fa-researchgate"
style="padding: 10px; font-size: 20px; width: 30px; text-align: center; text-decoration: none; margin: 5px 2px;"></a>
</div>
<a href="https://github.com/apache/singa">
<img style="position: absolute; top: 0; right: 0; border: 0; z-index: 10000;"
src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png" alt="Fork me on GitHub">
</a>
</body>
</html>