<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>singa-incubating-1.0.0 Release Notes · Apache SINGA</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--- 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 &quot;License&quot;); 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 &quot;AS IS&quot; 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.  --&gt;"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="singa-incubating-1.0.0 Release Notes · Apache SINGA"/><meta property="og:type" content="website"/><meta property="og:url" content="https://feynmandna.github.io/"/><meta property="og:description" content="&lt;!--- 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 &quot;License&quot;); 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 &quot;AS IS&quot; 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.  --&gt;"/><meta property="og:image" content="https://feynmandna.github.io/img/singa_twitter_banner.jpeg"/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://feynmandna.github.io/img/singa_twitter_banner.jpeg"/><link rel="shortcut icon" href="/img/favicon.ico"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://feynmandna.github.io/blog/atom.xml" title="Apache SINGA Blog ATOM Feed"/><link rel="alternate" type="application/rss+xml" href="https://feynmandna.github.io/blog/feed.xml" title="Apache SINGA Blog RSS Feed"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script src="https://unpkg.com/vanilla-back-to-top@7.1.14/dist/vanilla-back-to-top.min.js"></script><script>
        document.addEventListener('DOMContentLoaded', function() {
          addBackToTop(
            {"zIndex":100}
          )
        });
        </script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><img class="logo" src="/img/singa.png" alt="Apache SINGA"/></a><a href="/versions"><h3>next</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/docs/next/installation" target="_self">Docs</a></li><li class=""><a href="/docs/next/source-repository" target="_self">Community</a></li><li class=""><a href="/blog/" target="_self">News</a></li><li class=""><a target="_self"></a></li><li class=""><a href="https://github.com/apache/singa-doc" target="_self">GitHub</a></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/singa-doc/blob/master/docs/releases/RELEASE_NOTES_1.0.0.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">singa-incubating-1.0.0 Release Notes</h1></header><article><div><span><!--- 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.  -->
<p>SINGA is a general distributed deep learning platform for training big deep
learning models over large datasets. It is designed with an intuitive
programming model based on the layer abstraction. SINGA supports a wide variety
of popular deep learning models.</p>
<p>This release includes following features:</p>
<ul>
<li>Core abstractions including Tensor and Device
<ul>
<li>[SINGA-207] Update Tensor functions for matrices</li>
<li>[SINGA-205] Enable slice and concatenate operations for Tensor objects</li>
<li>[SINGA-197] Add CNMem as a submodule in lib/</li>
<li>[SINGA-196] Rename class Blob to Block</li>
<li>[SINGA-194] Add a Platform singleton</li>
<li>[SINGA-175] Add memory management APIs and implement a subclass using CNMeM</li>
<li>[SINGA-173] OpenCL Implementation</li>
<li>[SINGA-171] Create CppDevice and CudaDevice</li>
<li>[SINGA-168] Implement Cpp Math functions APIs</li>
<li>[SINGA-162] Overview of features for V1.x</li>
<li>[SINGA-165] Add cross-platform timer API to singa</li>
<li>[SINGA-167] Add Tensor Math function APIs</li>
<li>[SINGA-166] light built-in logging for making glog optional</li>
<li>[SINGA-164] Add the base Tensor class</li>
</ul></li>
</ul>
<ul>
<li>IO components for file read/write, network and data pre-processing
<ul>
<li>[SINGA-233] New communication interface</li>
<li>[SINGA-215] Implement Image Transformation for Image Pre-processing</li>
<li>[SINGA-214] Add LMDBReader and LMDBWriter for LMDB</li>
<li>[SINGA-213] Implement Encoder and Decoder for CSV</li>
<li>[SINGA-211] Add TextFileReader and TextFileWriter for CSV files</li>
<li>[SINGA-210] Enable checkpoint and resume for v1.0</li>
<li>[SINGA-208] Add DataIter base class and a simple implementation</li>
<li>[SINGA-203] Add OpenCV detection for cmake compilation</li>
<li>[SINGA-202] Add reader and writer for binary file</li>
<li>[SINGA-200] Implement Encoder and Decoder for data pre-processing</li>
</ul></li>
</ul>
<ul>
<li>Module components including layer classes, training algorithms and Python
binding
<ul>
<li>[SINGA-235] Unify the engines for cudnn and singa layers</li>
<li>[SINGA-230] OpenCL Convolution layer and Pooling layer</li>
<li>[SINGA-222] Fixed bugs in IO</li>
<li>[SINGA-218] Implementation for RNN CUDNN version</li>
<li>[SINGA-204] Support the training of feed-forward neural nets</li>
<li>[SINGA-199] Implement Python classes for SGD optimizers</li>
<li>[SINGA-198] Change Layer::Setup API to include input Tensor shapes</li>
<li>[SINGA-193] Add Python layers</li>
<li>[SINGA-192] Implement optimization algorithms for SINGA v1 (nesterove,
adagrad, rmsprop)</li>
<li>[SINGA-191] Add &quot;autotune&quot; for CudnnConvolution Layer</li>
<li>[SINGA-190] Add prelu layer and flatten layer</li>
<li>[SINGA-189] Generate python outputs of proto files</li>
<li>[SINGA-188] Add Dense layer</li>
<li>[SINGA-187] Add popular parameter initialization methods</li>
<li>[SINGA-186] Create Python Tensor class</li>
<li>[SINGA-184] Add Cross Entropy loss computation</li>
<li>[SINGA-183] Add the base classes for optimizer, constraint and regularizer</li>
<li>[SINGA-180] Add Activation layer and Softmax layer</li>
<li>[SINGA-178] Add Convolution layer and Pooling layer</li>
<li>[SINGA-176] Add loss and metric base classes</li>
<li>[SINGA-174] Add Batch Normalization layer and Local Response Nomalization
layer.</li>
<li>[SINGA-170] Add Dropout layer and CudnnDropout layer.</li>
<li>[SINGA-169] Add base Layer class for V1.0</li>
</ul></li>
</ul>
<ul>
<li><p>Examples</p>
<ul>
<li>[SINGA-232] Alexnet on Imagenet</li>
<li>[SINGA-231] Batchnormlized VGG model for cifar-10</li>
<li>[SINGA-228] Add Cpp Version of Convolution and Pooling layer</li>
<li>[SINGA-227] Add Split and Merge Layer and add ResNet Implementation</li>
</ul></li>
<li><p>Documentation</p>
<ul>
<li>[SINGA-239] Transfer documentation files of v0.3.0 to github</li>
<li>[SINGA-238] RBM on mnist</li>
<li>[SINGA-225] Documentation for installation and Cifar10 example</li>
<li>[SINGA-223] Use Sphinx to create the website</li>
</ul></li>
<li><p>Tools for compilation and some utility code</p>
<ul>
<li>[SINGA-229] Complete install targets</li>
<li>[SINGA-221] Support for Travis-CI</li>
<li>[SINGA-217] build python package with setup.py</li>
<li>[SINGA-216] add jenkins for CI support</li>
<li>[SINGA-212] Disable the compilation of libcnmem if USE_CUDA is OFF</li>
<li>[SINGA-195] Channel for sending training statistics</li>
<li>[SINGA-185] Add CBLAS and GLOG detection for singav1</li>
<li>[SINGA-181] Add NVCC supporting for .cu files</li>
<li>[SINGA-177] Add fully cmake supporting for the compilation of singa_v1</li>
<li>[SINGA-172] Add CMake supporting for Cuda and Cudnn libs</li>
</ul></li>
</ul>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 4/2/2020</em></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/singa-logo-square.png" alt="Apache SINGA" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/installation">Getting Started</a><a href="/docs/device">Guides</a><a href="/en/#">API Reference (coming soon)</a><a href="/docs/model-zoo-cnn-cifar10">Model Zoo</a><a href="/docs/download-singa">Development</a></div><div><h5>Community</h5><a href="/en/users.html">User Showcase</a><a href="/docs/history-singa">SINGA History</a><a href="/docs/team-list">SINGA Team</a><a href="/news">SINGA News</a><a href="https://github.com/apache/singa-doc">GitHub</a><div class="social"><a class="github-button" href="https://github.com/apache/singa-doc" data-count-href="/apache/singa/stargazers" data-show-count="true" data-count-aria-label="# stargazers on GitHub" aria-label="Star this project on GitHub">apache/singa-doc</a></div><div class="social"><a href="https://twitter.com/ApacheSINGA" class="twitter-follow-button">Follow @ApacheSINGA</a></div></div><div><h5>Apache Software Foundation</h5><a href="https://apache.org/" target="_blank" rel="noreferrer noopener">Foundation</a><a href="http://www.apache.org/licenses/" target="_blank" rel="noreferrer noopener">License</a><a href="http://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noreferrer noopener">Sponsorship</a><a href="http://www.apache.org/foundation/thanks.html" target="_blank" rel="noreferrer noopener">Thanks</a><a href="http://www.apache.org/events/current-event" target="_blank" rel="noreferrer noopener">Events</a><a href="http://www.apache.org/security/" target="_blank" rel="noreferrer noopener">Security</a></div></section><div style="width:100%;text-align:center"><a href="https://apache.org/" target="_blank" rel="noreferrer noopener" class="ApacheOpenSource"><img src="/img/asf_logo_wide.svg" alt="Apache Open Source"/></a><section class="copyright" style="max-width:60%;margin:0 auto">Copyright © 2020
   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.</section></div></footer></div><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</script></body></html>