You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@singa.apache.org by wa...@apache.org on 2015/05/07 15:07:50 UTC

[26/57] [partial] incubator-singa git commit: create github pages

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/666a841d/api/classsinga_1_1Layer.html
----------------------------------------------------------------------
diff --git a/api/classsinga_1_1Layer.html b/api/classsinga_1_1Layer.html
new file mode 100644
index 0000000..81352d1
--- /dev/null
+++ b/api/classsinga_1_1Layer.html
@@ -0,0 +1,741 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>Apache SINGA: singa::Layer Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="singa-logo-small.png"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">Apache SINGA
+   </div>
+   <div id="projectbrief">A distributed deep learning platform .</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><b>singa</b></li><li class="navelem"><a class="el" href="classsinga_1_1Layer.html">Layer</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pro-attribs">Protected Attributes</a> &#124;
+<a href="classsinga_1_1Layer-members.html">List of all members</a>  </div>
+  <div class="headertitle">
+<div class="title">singa::Layer Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Base layer class.  
+ <a href="classsinga_1_1Layer.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="base__layer_8h_source.html">base_layer.h</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for singa::Layer:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="classsinga_1_1Layer.png" usemap="#singa::Layer_map" alt=""/>
+  <map id="singa::Layer_map" name="singa::Layer_map">
+<area href="classsinga_1_1BridgeDstLayer.html" title="For recv data from layer on other threads which may resident on other nodes due to layer/data partito..." alt="singa::BridgeDstLayer" shape="rect" coords="164,56,318,80"/>
+<area href="classsinga_1_1BridgeSrcLayer.html" title="For sending data to layer on other threads which may resident on other nodes due to layer/data partit..." alt="singa::BridgeSrcLayer" shape="rect" coords="164,112,318,136"/>
+<area href="classsinga_1_1ConcateLayer.html" title="Concate src layers on one dimension. " alt="singa::ConcateLayer" shape="rect" coords="164,168,318,192"/>
+<area href="classsinga_1_1ConvolutionLayer.html" title="Convolution layer. " alt="singa::ConvolutionLayer" shape="rect" coords="164,224,318,248"/>
+<area href="classsinga_1_1DataLayer.html" title="base layer for prefetching records from local Shard, HDFS, lmdb, etc. " alt="singa::DataLayer" shape="rect" coords="164,280,318,304"/>
+<area href="classsinga_1_1DropoutLayer.html" alt="singa::DropoutLayer" shape="rect" coords="164,336,318,360"/>
+<area href="classsinga_1_1InnerProductLayer.html" title="fully connected layer " alt="singa::InnerProductLayer" shape="rect" coords="164,392,318,416"/>
+<area href="classsinga_1_1LossLayer.html" title="Loss layer to calculate loss and other metrics, e.g., precison. " alt="singa::LossLayer" shape="rect" coords="164,448,318,472"/>
+<area href="classsinga_1_1LRNLayer.html" alt="singa::LRNLayer" shape="rect" coords="164,504,318,528"/>
+<area href="classsinga_1_1ParserLayer.html" title="parse the input records into Blobs. " alt="singa::ParserLayer" shape="rect" coords="164,560,318,584"/>
+<area href="classsinga_1_1PoolingLayer.html" alt="singa::PoolingLayer" shape="rect" coords="164,616,318,640"/>
+<area href="classsinga_1_1ReLULayer.html" alt="singa::ReLULayer" shape="rect" coords="164,672,318,696"/>
+<area href="classsinga_1_1SliceLayer.html" title="Slice this layer into multiple dst layers on one dimension. " alt="singa::SliceLayer" shape="rect" coords="164,728,318,752"/>
+<area href="classsinga_1_1SplitLayer.html" title="Replciate this layer into multiple dst layers. " alt="singa::SplitLayer" shape="rect" coords="164,784,318,808"/>
+<area href="classsinga_1_1TanhLayer.html" title="This layer apply Tan function to neuron activations. " alt="singa::TanhLayer" shape="rect" coords="164,840,318,864"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:aeec3259af3b38227d4e3b3c5f5340573"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#aeec3259af3b38227d4e3b3c5f5340573">Init</a> (const LayerProto &amp;proto)</td></tr>
+<tr class="memdesc:aeec3259af3b38227d4e3b3c5f5340573"><td class="mdescLeft">&#160;</td><td class="mdescRight">simply save the proto configuation.  <a href="#aeec3259af3b38227d4e3b3c5f5340573">More...</a><br/></td></tr>
+<tr class="separator:aeec3259af3b38227d4e3b3c5f5340573"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abc49f57fad4091d99578512c9d24d436"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abc49f57fad4091d99578512c9d24d436"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#abc49f57fad4091d99578512c9d24d436">Init</a> (const <a class="el" href="classsinga_1_1Layer.html">Layer</a> &amp;other, const vector&lt; int &gt; &amp;shape)</td></tr>
+<tr class="memdesc:abc49f57fad4091d99578512c9d24d436"><td class="mdescLeft">&#160;</td><td class="mdescRight">copy layer configuration from the other <a class="el" href="classsinga_1_1Layer.html" title="Base layer class. ">Layer</a>, and set the shape. <br/></td></tr>
+<tr class="separator:abc49f57fad4091d99578512c9d24d436"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa029c17a260a114802c46d9faa347b7f"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#aa029c17a260a114802c46d9faa347b7f">ToProto</a> (LayerProto *layer_proto, bool copyData)</td></tr>
+<tr class="memdesc:aa029c17a260a114802c46d9faa347b7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Marshal layer properties and data into google protobuf object (i.e., snapshot).  <a href="#aa029c17a260a114802c46d9faa347b7f">More...</a><br/></td></tr>
+<tr class="separator:aa029c17a260a114802c46d9faa347b7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aecbe8ed0ff294e40586678cef474ca42"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#aecbe8ed0ff294e40586678cef474ca42">Setup</a> (const LayerProto &amp;proto, const vector&lt; SLayer &gt; &amp;<a class="el" href="classsinga_1_1Layer.html#a836817f842419098c53fff371ae8fc80">srclayers</a>)=0</td></tr>
+<tr class="memdesc:aecbe8ed0ff294e40586678cef474ca42"><td class="mdescLeft">&#160;</td><td class="mdescRight">Setup layer properties.  <a href="#aecbe8ed0ff294e40586678cef474ca42">More...</a><br/></td></tr>
+<tr class="separator:aecbe8ed0ff294e40586678cef474ca42"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae691995f08f16d01739f98b6d9bd0335"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#ae691995f08f16d01739f98b6d9bd0335">Setup</a> ()</td></tr>
+<tr class="memdesc:ae691995f08f16d01739f98b6d9bd0335"><td class="mdescLeft">&#160;</td><td class="mdescRight">Setup layer properties.  <a href="#ae691995f08f16d01739f98b6d9bd0335">More...</a><br/></td></tr>
+<tr class="separator:ae691995f08f16d01739f98b6d9bd0335"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af8c911e3ca34f8c288eaddee263661aa"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#af8c911e3ca34f8c288eaddee263661aa">SetupAfterPartition</a> (const LayerProto &amp;proto, const vector&lt; int &gt; &amp;shape, const vector&lt; SLayer &gt; &amp;<a class="el" href="classsinga_1_1Layer.html#a836817f842419098c53fff371ae8fc80">srclayers</a>)=0</td></tr>
+<tr class="memdesc:af8c911e3ca34f8c288eaddee263661aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Setup the layer properties except shape.  <a href="#af8c911e3ca34f8c288eaddee263661aa">More...</a><br/></td></tr>
+<tr class="separator:af8c911e3ca34f8c288eaddee263661aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a50fbb59219c1eeb5559431e1719e1f97"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50fbb59219c1eeb5559431e1719e1f97"></a>
+virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#a50fbb59219c1eeb5559431e1719e1f97">SetupAfterPartition</a> ()</td></tr>
+<tr class="memdesc:a50fbb59219c1eeb5559431e1719e1f97"><td class="mdescLeft">&#160;</td><td class="mdescRight">Setup the layer properties except shape. <br/></td></tr>
+<tr class="separator:a50fbb59219c1eeb5559431e1719e1f97"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aff0688e641c845aee9964a3d96172731"><td class="memItemLeft" align="right" valign="top">virtual vector&lt; shared_ptr<br class="typebreak"/>
+&lt; <a class="el" href="classsinga_1_1Param.html">Param</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#aff0688e641c845aee9964a3d96172731">GetParams</a> ()</td></tr>
+<tr class="memdesc:aff0688e641c845aee9964a3d96172731"><td class="mdescLeft">&#160;</td><td class="mdescRight">Layers that have paramters must overload this function.  <a href="#aff0688e641c845aee9964a3d96172731">More...</a><br/></td></tr>
+<tr class="separator:aff0688e641c845aee9964a3d96172731"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a11ef38d1bf31d054a96a1ac45fd49299"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#a11ef38d1bf31d054a96a1ac45fd49299">ComputeFeature</a> (bool training, const vector&lt; SLayer &gt; &amp;<a class="el" href="classsinga_1_1Layer.html#a836817f842419098c53fff371ae8fc80">srclayers</a>)=0</td></tr>
+<tr class="memdesc:a11ef38d1bf31d054a96a1ac45fd49299"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute features of this layer based on connected layers.  <a href="#a11ef38d1bf31d054a96a1ac45fd49299">More...</a><br/></td></tr>
+<tr class="separator:a11ef38d1bf31d054a96a1ac45fd49299"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af5d9b7aba92f5ead82872e5a70a1def0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af5d9b7aba92f5ead82872e5a70a1def0"></a>
+virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#af5d9b7aba92f5ead82872e5a70a1def0">ComputeFeature</a> (bool training)</td></tr>
+<tr class="separator:af5d9b7aba92f5ead82872e5a70a1def0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7eb4b3141896bff0d7c423a24308fd63"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#a7eb4b3141896bff0d7c423a24308fd63">ComputeGradient</a> (const vector&lt; SLayer &gt; &amp;<a class="el" href="classsinga_1_1Layer.html#a836817f842419098c53fff371ae8fc80">srclayers</a>)=0</td></tr>
+<tr class="memdesc:a7eb4b3141896bff0d7c423a24308fd63"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute gradients for parameters and connecting layers.  <a href="#a7eb4b3141896bff0d7c423a24308fd63">More...</a><br/></td></tr>
+<tr class="separator:a7eb4b3141896bff0d7c423a24308fd63"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a50591a153fbfe349d8d307781d19ebb5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50591a153fbfe349d8d307781d19ebb5"></a>
+virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#a50591a153fbfe349d8d307781d19ebb5">ComputeGradient</a> ()</td></tr>
+<tr class="memdesc:a50591a153fbfe349d8d307781d19ebb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute gradients for parameters and connecting layers. <br/></td></tr>
+<tr class="separator:a50591a153fbfe349d8d307781d19ebb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a12d268e424e4affada0d5b85ea6d2359"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#a12d268e424e4affada0d5b85ea6d2359">partition_dimension</a> () const </td></tr>
+<tr class="memdesc:a12d268e424e4affada0d5b85ea6d2359"><td class="mdescLeft">&#160;</td><td class="mdescRight">decide on which dimension to do the partitioning.  <a href="#a12d268e424e4affada0d5b85ea6d2359">More...</a><br/></td></tr>
+<tr class="separator:a12d268e424e4affada0d5b85ea6d2359"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7e134c5b4a1a8e442626354d2d869caa"><td class="memItemLeft" align="right" valign="top">virtual ConnectionType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#a7e134c5b4a1a8e442626354d2d869caa">connection_type</a> (int k) const </td></tr>
+<tr class="memdesc:a7e134c5b4a1a8e442626354d2d869caa"><td class="mdescLeft">&#160;</td><td class="mdescRight">return connection type between two layers.  <a href="#a7e134c5b4a1a8e442626354d2d869caa">More...</a><br/></td></tr>
+<tr class="separator:a7e134c5b4a1a8e442626354d2d869caa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab3c0e1047f36e2fb783a6fd3d4eabd73"><td class="memItemLeft" align="right" valign="top">virtual PartitionType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#ab3c0e1047f36e2fb783a6fd3d4eabd73">partition_type</a> () const </td></tr>
+<tr class="memdesc:ab3c0e1047f36e2fb783a6fd3d4eabd73"><td class="mdescLeft">&#160;</td><td class="mdescRight">return partition type of this layer.  <a href="#ab3c0e1047f36e2fb783a6fd3d4eabd73">More...</a><br/></td></tr>
+<tr class="separator:ab3c0e1047f36e2fb783a6fd3d4eabd73"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:addab6c99866d34001471f86aede7f6e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="addab6c99866d34001471f86aede7f6e8"></a>
+virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#addab6c99866d34001471f86aede7f6e8">set_locationid</a> (int id)</td></tr>
+<tr class="memdesc:addab6c99866d34001471f86aede7f6e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">location id is the execution unit (i.e., thread from the working group) ID. <br/></td></tr>
+<tr class="separator:addab6c99866d34001471f86aede7f6e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af3170517c202d998fec1f20b97e6a881"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3170517c202d998fec1f20b97e6a881"></a>
+virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>locationid</b> () const </td></tr>
+<tr class="separator:af3170517c202d998fec1f20b97e6a881"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af177cc1bdfc8d57b6992855bf437ef9a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af177cc1bdfc8d57b6992855bf437ef9a"></a>
+virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#af177cc1bdfc8d57b6992855bf437ef9a">set_partitionid</a> (int id)</td></tr>
+<tr class="memdesc:af177cc1bdfc8d57b6992855bf437ef9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">partition id is the ID of the layer in the original layer. <br/></td></tr>
+<tr class="separator:af177cc1bdfc8d57b6992855bf437ef9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad7f7ec42c3d8086370d9fbdfaa57fe7a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad7f7ec42c3d8086370d9fbdfaa57fe7a"></a>
+virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>partitiionid</b> () const </td></tr>
+<tr class="separator:ad7f7ec42c3d8086370d9fbdfaa57fe7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abc01aee87088c70cedadfe54f60d78c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abc01aee87088c70cedadfe54f60d78c7"></a>
+virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>set_name</b> (string <a class="el" href="classsinga_1_1Layer.html#abc76f037afc13a17ab07082cfae945de">name</a>)</td></tr>
+<tr class="separator:abc01aee87088c70cedadfe54f60d78c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a50478bdb3fdeb8272d0f693134e5064e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50478bdb3fdeb8272d0f693134e5064e"></a>
+virtual const string&#160;</td><td class="memItemRight" valign="bottom"><b>type</b> () const </td></tr>
+<tr class="separator:a50478bdb3fdeb8272d0f693134e5064e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abc76f037afc13a17ab07082cfae945de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abc76f037afc13a17ab07082cfae945de"></a>
+const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#abc76f037afc13a17ab07082cfae945de">name</a> () const </td></tr>
+<tr class="memdesc:abc76f037afc13a17ab07082cfae945de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return name of this layer. <br/></td></tr>
+<tr class="separator:abc76f037afc13a17ab07082cfae945de"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9c693432b440fdf2078f6d9921ba394f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9c693432b440fdf2078f6d9921ba394f"></a>
+const vector&lt; int &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>shape</b> (const <a class="el" href="classsinga_1_1Layer.html">Layer</a> *layer=nullptr) const </td></tr>
+<tr class="separator:a9c693432b440fdf2078f6d9921ba394f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad443a1e7f957dad71fd0c9b356a53c20"><td class="memItemLeft" align="right" valign="top">virtual const <a class="el" href="classBlob.html">Blob</a>&lt; float &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#ad443a1e7f957dad71fd0c9b356a53c20">data</a> (const <a class="el" href="classsinga_1_1Layer.html">Layer</a> *from=nullptr) const </td></tr>
+<tr class="separator:ad443a1e7f957dad71fd0c9b356a53c20"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab62f26448810b04d35e892ce013feac8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab62f26448810b04d35e892ce013feac8"></a>
+virtual <a class="el" href="classBlob.html">Blob</a>&lt; float &gt; *&#160;</td><td class="memItemRight" valign="bottom"><b>mutable_data</b> (const <a class="el" href="classsinga_1_1Layer.html">Layer</a> *from=nullptr)</td></tr>
+<tr class="separator:ab62f26448810b04d35e892ce013feac8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae53f8fe14b76f423e7d79d2bda36523a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae53f8fe14b76f423e7d79d2bda36523a"></a>
+virtual const <a class="el" href="classBlob.html">Blob</a>&lt; float &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>grad</b> (const <a class="el" href="classsinga_1_1Layer.html">Layer</a> *from=nullptr) const </td></tr>
+<tr class="separator:ae53f8fe14b76f423e7d79d2bda36523a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad4936117ef7d58193726a966f796fafc"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classBlob.html">Blob</a>&lt; float &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#ad4936117ef7d58193726a966f796fafc">mutable_grad</a> (const <a class="el" href="classsinga_1_1Layer.html">Layer</a> *from=nullptr)</td></tr>
+<tr class="separator:ad4936117ef7d58193726a966f796fafc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a836817f842419098c53fff371ae8fc80"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a836817f842419098c53fff371ae8fc80"></a>
+virtual const vector&lt; SLayer &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#a836817f842419098c53fff371ae8fc80">srclayers</a> () const </td></tr>
+<tr class="memdesc:a836817f842419098c53fff371ae8fc80"><td class="mdescLeft">&#160;</td><td class="mdescRight">return LayerS that connected to this layer <br/></td></tr>
+<tr class="separator:a836817f842419098c53fff371ae8fc80"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2c5aeabbc26770bcff169dd907e9c737"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c5aeabbc26770bcff169dd907e9c737"></a>
+virtual const vector&lt; SLayer &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classsinga_1_1Layer.html#a2c5aeabbc26770bcff169dd907e9c737">dstlayers</a> () const </td></tr>
+<tr class="memdesc:a2c5aeabbc26770bcff169dd907e9c737"><td class="mdescLeft">&#160;</td><td class="mdescRight">return LayerS that this layer connected to <br/></td></tr>
+<tr class="separator:a2c5aeabbc26770bcff169dd907e9c737"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a944081b99606ba317932bd9994b6fee3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a944081b99606ba317932bd9994b6fee3"></a>
+virtual const int&#160;</td><td class="memItemRight" valign="bottom"><b>srclayers_size</b> () const </td></tr>
+<tr class="separator:a944081b99606ba317932bd9994b6fee3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9ebebda5c30c10648c3f1c4af38f49c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ebebda5c30c10648c3f1c4af38f49c4"></a>
+virtual const int&#160;</td><td class="memItemRight" valign="bottom"><b>dstlayers_size</b> () const </td></tr>
+<tr class="separator:a9ebebda5c30c10648c3f1c4af38f49c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae8fe0fc86daa0d8092257aecbd7662d3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae8fe0fc86daa0d8092257aecbd7662d3"></a>
+virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>ClearDstLayers</b> ()</td></tr>
+<tr class="separator:ae8fe0fc86daa0d8092257aecbd7662d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a089f56583f89f9b4c02acc8b1664b948"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a089f56583f89f9b4c02acc8b1664b948"></a>
+virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>ClearSrcLayers</b> ()</td></tr>
+<tr class="separator:a089f56583f89f9b4c02acc8b1664b948"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aac3f866084459be028a0f2f931016d33"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac3f866084459be028a0f2f931016d33"></a>
+virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>AddSrcLayer</b> (SLayer src)</td></tr>
+<tr class="separator:aac3f866084459be028a0f2f931016d33"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a13a01a39dbcd89c752202cbcbb53c36e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13a01a39dbcd89c752202cbcbb53c36e"></a>
+virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>AddDstLayer</b> (SLayer dst)</td></tr>
+<tr class="separator:a13a01a39dbcd89c752202cbcbb53c36e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aad61de583fe620672dc76963173ab248"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad61de583fe620672dc76963173ab248"></a>
+virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>is_datalayer</b> () const </td></tr>
+<tr class="separator:aad61de583fe620672dc76963173ab248"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3d6c46c2c9e4e0fab3b66b4dae1cb9bc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d6c46c2c9e4e0fab3b66b4dae1cb9bc"></a>
+virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>is_parserlayer</b> () const </td></tr>
+<tr class="separator:a3d6c46c2c9e4e0fab3b66b4dae1cb9bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8ab4edffdb3cb2a30b70116e725c6246"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ab4edffdb3cb2a30b70116e725c6246"></a>
+virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>is_losslayer</b> () const </td></tr>
+<tr class="separator:a8ab4edffdb3cb2a30b70116e725c6246"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1927b5a9b362e5839471e481f07f8088"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1927b5a9b362e5839471e481f07f8088"></a>
+virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>is_bridgesrclayer</b> () const </td></tr>
+<tr class="separator:a1927b5a9b362e5839471e481f07f8088"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a140a45def081bfb1be4877ff4091c87e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a140a45def081bfb1be4877ff4091c87e"></a>
+virtual bool&#160;</td><td class="memItemRight" valign="bottom"><b>is_bridgedstlayer</b> () const </td></tr>
+<tr class="separator:a140a45def081bfb1be4877ff4091c87e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:a9307fe49ca9fa70a77f00e262e51b58e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9307fe49ca9fa70a77f00e262e51b58e"></a>
+string&#160;</td><td class="memItemRight" valign="bottom"><b>name_</b></td></tr>
+<tr class="separator:a9307fe49ca9fa70a77f00e262e51b58e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6244f7e610e5a4add1c827415f5430fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6244f7e610e5a4add1c827415f5430fb"></a>
+<a class="el" href="classBlob.html">Blob</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>data_</b></td></tr>
+<tr class="separator:a6244f7e610e5a4add1c827415f5430fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a455a662d1be46a83ac5a42705b77e717"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a455a662d1be46a83ac5a42705b77e717"></a>
+<a class="el" href="classBlob.html">Blob</a>&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>grad_</b></td></tr>
+<tr class="separator:a455a662d1be46a83ac5a42705b77e717"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a528fc84a4714528fa0419e01d6bba5b1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a528fc84a4714528fa0419e01d6bba5b1"></a>
+LayerProto&#160;</td><td class="memItemRight" valign="bottom"><b>layer_proto_</b></td></tr>
+<tr class="separator:a528fc84a4714528fa0419e01d6bba5b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a31f4a6569d9531304e5c0c3b1bdacda9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31f4a6569d9531304e5c0c3b1bdacda9"></a>
+vector&lt; SLayer &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>srclayers_</b></td></tr>
+<tr class="separator:a31f4a6569d9531304e5c0c3b1bdacda9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a755a464d39e139aa161e03be77810101"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a755a464d39e139aa161e03be77810101"></a>
+vector&lt; SLayer &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>dstlayers_</b></td></tr>
+<tr class="separator:a755a464d39e139aa161e03be77810101"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Base layer class. </p>
+<p>Children should implement at least <a class="el" href="classsinga_1_1Layer.html#aecbe8ed0ff294e40586678cef474ca42" title="Setup layer properties. ">Layer::Setup</a>, <a class="el" href="classsinga_1_1Layer.html#a11ef38d1bf31d054a96a1ac45fd49299" title="Compute features of this layer based on connected layers. ">Layer::ComputeFeature()</a>, Layer::ComputGradient() functions for backpropagation method; TODO(wangwei) implement children layers to support contrastive divergence, The identifier of each layer is the literal string of the class name without the suffix "Layer", which is used in layer registration and creation. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a11ef38d1bf31d054a96a1ac45fd49299"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual void singa::Layer::ComputeFeature </td>
+          <td>(</td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>training</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const vector&lt; SLayer &gt; &amp;&#160;</td>
+          <td class="paramname"><em>srclayers</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Compute features of this layer based on connected layers. </p>
+<p>Implement forward propagation for BP; TODO Implement both postive phase and negative phase for CD. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">srclayers</td><td>layers connecting to this layer </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Implemented in <a class="el" href="classsinga_1_1ParserLayer.html#a346797e377211251ae5c268fca093c50">singa::ParserLayer</a>, <a class="el" href="classsinga_1_1DataLayer.html#a1764fa7801dd568e706beacf18d284b0">singa::DataLayer</a>, <a class="el" href="classsinga_1_1BridgeDstLayer.html#a16beb7c175217864bf2f75af016aa5ac">singa::BridgeDstLayer</a>, and <a class="el" href="classsinga_1_1BridgeSrcLayer.html#a6b6b652e2ae1b2c863b5143e07e9b6bf">singa::BridgeSrcLayer</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7eb4b3141896bff0d7c423a24308fd63"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual void singa::Layer::ComputeGradient </td>
+          <td>(</td>
+          <td class="paramtype">const vector&lt; SLayer &gt; &amp;&#160;</td>
+          <td class="paramname"><em>srclayers</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Compute gradients for parameters and connecting layers. </p>
+<p>Implement backward propagation for BP; TODO Calculate gradients for parameters for CD. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">srclayers</td><td>layers connecting to this layer. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Implemented in <a class="el" href="classsinga_1_1ParserLayer.html#afe2b6dd37ea96e7039ed24e93b28899b">singa::ParserLayer</a>, <a class="el" href="classsinga_1_1DataLayer.html#a2ab6f424cb1838773bb16c94d6a585a5">singa::DataLayer</a>, <a class="el" href="classsinga_1_1BridgeDstLayer.html#ae55ce33799c5e7a2d6fcdbba83c94ae3">singa::BridgeDstLayer</a>, and <a class="el" href="classsinga_1_1BridgeSrcLayer.html#a54ce17eea86fb66db8984e13d1731f94">singa::BridgeSrcLayer</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7e134c5b4a1a8e442626354d2d869caa"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual ConnectionType singa::Layer::connection_type </td>
+          <td>(</td>
+          <td class="paramtype">int&#160;</td>
+          <td class="paramname"><em>k</em></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>return connection type between two layers. </p>
+<p>Currently support two connections: kOneToOne, and kOneToAll. kOneToOne indicates the dst neuron depends on only one neuron from src layer. kOneToAll indicates the dst neuron depends on all neurons from src layer. TODO support kOneToMany. </p>
+
+<p>Reimplemented in <a class="el" href="classsinga_1_1SoftmaxLossLayer.html#afdf930f5872db0c86d6f1fd944b338c3">singa::SoftmaxLossLayer</a>, <a class="el" href="classsinga_1_1InnerProductLayer.html#ae8f82011418b1e9c2c2f4c11d358c141">singa::InnerProductLayer</a>, and <a class="el" href="classsinga_1_1ConvolutionLayer.html#a2d02f88e6500f44a2df338ff23773709">singa::ConvolutionLayer</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad443a1e7f957dad71fd0c9b356a53c20"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual const <a class="el" href="classBlob.html">Blob</a>&lt;float&gt;&amp; singa::Layer::data </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classsinga_1_1Layer.html">Layer</a> *&#160;</td>
+          <td class="paramname"><em>from</em> = <code>nullptr</code></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>a const ref for <a class="el" href="classBlob.html">Blob</a> storing neuron values of this layer for BP </dd></dl>
+
+<p>Reimplemented in <a class="el" href="classsinga_1_1SliceLayer.html#a635401ab1990f4dd97bf936cc6c61e71">singa::SliceLayer</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aff0688e641c845aee9964a3d96172731"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual vector&lt;shared_ptr&lt;<a class="el" href="classsinga_1_1Param.html">Param</a>&gt; &gt; singa::Layer::GetParams </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Layers that have paramters must overload this function. </p>
+<dl class="section return"><dt>Returns</dt><dd>parameters associated with this layer </dd></dl>
+
+<p>Reimplemented in <a class="el" href="classsinga_1_1InnerProductLayer.html#acb8362b53f2d515c166af413d708d4d0">singa::InnerProductLayer</a>, and <a class="el" href="classsinga_1_1ConvolutionLayer.html#aa66cf441e0f6cd315113db2e09299a5b">singa::ConvolutionLayer</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aeec3259af3b38227d4e3b3c5f5340573"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual void singa::Layer::Init </td>
+          <td>(</td>
+          <td class="paramtype">const LayerProto &amp;&#160;</td>
+          <td class="paramname"><em>proto</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>simply save the proto configuation. </p>
+<p>most initializations are done by <a class="el" href="classsinga_1_1Layer.html#ae691995f08f16d01739f98b6d9bd0335" title="Setup layer properties. ">Setup()</a>. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">layer_proto</td><td>user defined layer configuration </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ad4936117ef7d58193726a966f796fafc"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual <a class="el" href="classBlob.html">Blob</a>&lt;float&gt;* singa::Layer::mutable_grad </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classsinga_1_1Layer.html">Layer</a> *&#160;</td>
+          <td class="paramname"><em>from</em> = <code>nullptr</code></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>a pointer to storing neuron grads of this layer for BP </dd></dl>
+
+<p>Reimplemented in <a class="el" href="classsinga_1_1ParserLayer.html#a4ee00445771065cc4bf569003a33e796">singa::ParserLayer</a>, <a class="el" href="classsinga_1_1LossLayer.html#aaedd08096c3e1f2bae5cccf75cdf3382">singa::LossLayer</a>, <a class="el" href="classsinga_1_1SliceLayer.html#a4022c8722eb9b77d8b774c8987c4cf7e">singa::SliceLayer</a>, and <a class="el" href="classsinga_1_1DataLayer.html#ae15c0c4720f0a070fcfc3416c1449a97">singa::DataLayer</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a12d268e424e4affada0d5b85ea6d2359"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual int singa::Layer::partition_dimension </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>decide on which dimension to do the partitioning. </p>
+<p>kLayer, kData, kNone (no partition) </p>
+<dl class="section return"><dt>Returns</dt><dd>the partition dimension, -1 for no partition </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ab3c0e1047f36e2fb783a6fd3d4eabd73"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual PartitionType singa::Layer::partition_type </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>return partition type of this layer. </p>
+<p>E.g., kNone, kLayer or kData </p>
+
+<p>Reimplemented in <a class="el" href="classsinga_1_1ParserLayer.html#a67d78cafced1950980b54b0b6e302e87">singa::ParserLayer</a>, <a class="el" href="classsinga_1_1DataLayer.html#a5ffcae36ddcc4a445b9a91b083b29d2b">singa::DataLayer</a>, and <a class="el" href="classsinga_1_1SoftmaxLossLayer.html#af36fdea88d2538cffbbe34a2930613a6">singa::SoftmaxLossLayer</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aecbe8ed0ff294e40586678cef474ca42"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual void singa::Layer::Setup </td>
+          <td>(</td>
+          <td class="paramtype">const LayerProto &amp;&#160;</td>
+          <td class="paramname"><em>proto</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const vector&lt; SLayer &gt; &amp;&#160;</td>
+          <td class="paramname"><em>srclayers</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Setup layer properties. </p>
+<p>Setup the shapes for data and parameters, also setup some properties based on the layer configuration and connected src layers. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">srclayers</td><td>layers connecting to this layer </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Implemented in <a class="el" href="classsinga_1_1ParserLayer.html#a2c6328bfd198d28854c61392dde05882">singa::ParserLayer</a>, <a class="el" href="classsinga_1_1LossLayer.html#a16f16d5b289cb2d4bee9a9bee21e3b7c">singa::LossLayer</a>, <a class="el" href="classsinga_1_1SplitLayer.html#a5a03aaa4e7de6432b511fedb340b9250">singa::SplitLayer</a>, <a class="el" href="classsinga_1_1SliceLayer.html#a965d30f2b8ddb853b661671f73d7e8ea">singa::SliceLayer</a>, <a class="el" href="classsinga_1_1DataLayer.html#aad95cbeac929cdb9eeb7fb6e7996ac26">singa::DataLayer</a>, <a class="el" href="classsinga_1_1ConcateLayer.html#a160ffe17e1138034c7d9b8d61065412b">singa::ConcateLayer</a>, <a class="el" href="classsinga_1_1BridgeDstLayer.html#a8caa316af324395b766409dd8f8bcd15">singa::BridgeDstLayer</a>, <a class="el" href="classsinga_1_1TanhLayer.html#ae2f5b0d2f2ac2f304324795cf46151ef">singa::TanhLayer</a>, <a class="el" href="classsinga_1_1BridgeSrcLayer.html#a6bbe7d66a0c0e06b430f281b67e5ae92">singa::BridgeSrcLa
 yer</a>, <a class="el" href="classsinga_1_1LMDBDataLayer.html#a715e5072cbf8897531f88bb681698081">singa::LMDBDataLayer</a>, <a class="el" href="classsinga_1_1ShardDataLayer.html#a3dbc554bbed8a2515c3bb8b6948dd407">singa::ShardDataLayer</a>, <a class="el" href="classsinga_1_1RGBImageLayer.html#a578b92e4e894277790bf0d24b8bba9c7">singa::RGBImageLayer</a>, <a class="el" href="classsinga_1_1SoftmaxLossLayer.html#af92ba2d30039d508cada194a557067a7">singa::SoftmaxLossLayer</a>, <a class="el" href="classsinga_1_1ReLULayer.html#aa9bb1353ba3d064edd1f89d5918442aa">singa::ReLULayer</a>, <a class="el" href="classsinga_1_1PoolingLayer.html#a7d074abe2fb6fc0cf73e84eae80f269a">singa::PoolingLayer</a>, <a class="el" href="classsinga_1_1MnistImageLayer.html#a1dba251022584d60d12092481d162d04">singa::MnistImageLayer</a>, <a class="el" href="classsinga_1_1LRNLayer.html#aeec95bd635930c4d6b028119357fb0a1">singa::LRNLayer</a>, <a class="el" href="classsinga_1_1LabelLayer.html#aa7cc5abb98cbe0d7066f8336dca384e2"
 >singa::LabelLayer</a>, <a class="el" href="classsinga_1_1InnerProductLayer.html#aa63806b1ded9d752350ac01fb3a3aafb">singa::InnerProductLayer</a>, <a class="el" href="classsinga_1_1DropoutLayer.html#a3b2016cbb63ea661e3abef8dd0b392c9">singa::DropoutLayer</a>, and <a class="el" href="classsinga_1_1ConvolutionLayer.html#a4d942e8244380cc6f8471cfa5ffb933e">singa::ConvolutionLayer</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae691995f08f16d01739f98b6d9bd0335"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual void singa::Layer::Setup </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Setup layer properties. </p>
+<p>Setup the shapes for data and parameters, also setup some properties based on the layer configuration and connected src layers. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">srclayers</td><td>layers connecting to this layer </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Reimplemented in <a class="el" href="classsinga_1_1ParserLayer.html#ad01d938a87aba0c7a6f8ccf0139bde4c">singa::ParserLayer</a>, and <a class="el" href="classsinga_1_1DataLayer.html#a703368d1972e8343e0dea4acd93702ae">singa::DataLayer</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af8c911e3ca34f8c288eaddee263661aa"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual void singa::Layer::SetupAfterPartition </td>
+          <td>(</td>
+          <td class="paramtype">const LayerProto &amp;&#160;</td>
+          <td class="paramname"><em>proto</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const vector&lt; int &gt; &amp;&#160;</td>
+          <td class="paramname"><em>shape</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const vector&lt; SLayer &gt; &amp;&#160;</td>
+          <td class="paramname"><em>srclayers</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Setup the layer properties except shape. </p>
+<p>the shape is already set and passed in to set other properties. perperties are set according to shapes of itself and connected layers, and configuration. this should not change the current shape_( shape check is done outside the function). </p>
+
+<p>Implemented in <a class="el" href="classsinga_1_1ParserLayer.html#a1340b2cf693aa48d823d12228900556b">singa::ParserLayer</a>, <a class="el" href="classsinga_1_1LossLayer.html#adefb43c93a024c3b7fc558abc291dc49">singa::LossLayer</a>, <a class="el" href="classsinga_1_1SplitLayer.html#a949028cd476e463b6893fb9ff6c7d664">singa::SplitLayer</a>, <a class="el" href="classsinga_1_1SliceLayer.html#adf443fffadbdb5671e7982028689bbca">singa::SliceLayer</a>, <a class="el" href="classsinga_1_1DataLayer.html#a3c7b81249e522dd231a098ffed481496">singa::DataLayer</a>, <a class="el" href="classsinga_1_1ConcateLayer.html#a3781c4852c40650f6e20858929f60ffa">singa::ConcateLayer</a>, <a class="el" href="classsinga_1_1BridgeDstLayer.html#a90883d70214e4ac2e1afd2337531ef03">singa::BridgeDstLayer</a>, <a class="el" href="classsinga_1_1TanhLayer.html#ae828e79607c2abe9c0b73627b8ec0548">singa::TanhLayer</a>, <a class="el" href="classsinga_1_1BridgeSrcLayer.html#aa81a45289008df0334e66e6b639862a4">singa::BridgeSrcLa
 yer</a>, <a class="el" href="classsinga_1_1SoftmaxLossLayer.html#aceb8d0a51d606b0ac6bd4c13e77af01a">singa::SoftmaxLossLayer</a>, <a class="el" href="classsinga_1_1ReLULayer.html#ad3098f5e7619f7746e3ca6836e0fe979">singa::ReLULayer</a>, <a class="el" href="classsinga_1_1PoolingLayer.html#aa106d86ff430bd174d07adafccb79b82">singa::PoolingLayer</a>, <a class="el" href="classsinga_1_1LRNLayer.html#a1d272777844aee450b00ecb6a52ba49f">singa::LRNLayer</a>, <a class="el" href="classsinga_1_1InnerProductLayer.html#a5cb033a8fde53340e58d7408befc6698">singa::InnerProductLayer</a>, <a class="el" href="classsinga_1_1DropoutLayer.html#a51b6005a831bf92b3ed5107b96efe5e1">singa::DropoutLayer</a>, and <a class="el" href="classsinga_1_1ConvolutionLayer.html#a59cbc71b6a48e4dee7c87170161370f9">singa::ConvolutionLayer</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa029c17a260a114802c46d9faa347b7f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual void singa::Layer::ToProto </td>
+          <td>(</td>
+          <td class="paramtype">LayerProto *&#160;</td>
+          <td class="paramname"><em>layer_proto</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool&#160;</td>
+          <td class="paramname"><em>copyData</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Marshal layer properties and data into google protobuf object (i.e., snapshot). </p>
+<p>Parameters are marshalled separately into another object (i.e., model). </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">layer_proto</td><td></td></tr>
+    <tr><td class="paramname">copyData</td><td>if true marshal data of DArray </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li>/home/wangwei/program/asf/incubator-singa/include/neuralnet/<a class="el" href="base__layer_8h_source.html">base_layer.h</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Thu May 7 2015 17:15:41 for Apache SINGA by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.6
+</small></address>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/666a841d/api/classsinga_1_1Layer.png
----------------------------------------------------------------------
diff --git a/api/classsinga_1_1Layer.png b/api/classsinga_1_1Layer.png
new file mode 100644
index 0000000..25e5238
Binary files /dev/null and b/api/classsinga_1_1Layer.png differ

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/666a841d/api/classsinga_1_1LossLayer-members.html
----------------------------------------------------------------------
diff --git a/api/classsinga_1_1LossLayer-members.html b/api/classsinga_1_1LossLayer-members.html
new file mode 100644
index 0000000..c1d7645
--- /dev/null
+++ b/api/classsinga_1_1LossLayer-members.html
@@ -0,0 +1,156 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.6"/>
+<title>Apache SINGA: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectlogo"><img alt="Logo" src="singa-logo-small.png"/></td>
+  <td style="padding-left: 0.5em;">
+   <div id="projectname">Apache SINGA
+   </div>
+   <div id="projectbrief">A distributed deep learning platform .</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.6 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+      <li><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><b>singa</b></li><li class="navelem"><a class="el" href="classsinga_1_1LossLayer.html">LossLayer</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">singa::LossLayer Member List</div>  </div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classsinga_1_1LossLayer.html">singa::LossLayer</a>, including all inherited members.</p>
+<table class="directory">
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AddDstLayer</b>(SLayer dst) (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>AddSrcLayer</b>(SLayer src) (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ClearDstLayers</b>() (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>ClearSrcLayers</b>() (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classsinga_1_1Layer.html#a11ef38d1bf31d054a96a1ac45fd49299">ComputeFeature</a>(bool training, const vector&lt; SLayer &gt; &amp;srclayers)=0</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classsinga_1_1Layer.html#af5d9b7aba92f5ead82872e5a70a1def0">ComputeFeature</a>(bool training)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classsinga_1_1Layer.html#a7eb4b3141896bff0d7c423a24308fd63">ComputeGradient</a>(const vector&lt; SLayer &gt; &amp;srclayers)=0</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classsinga_1_1Layer.html#a50591a153fbfe349d8d307781d19ebb5">ComputeGradient</a>()</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classsinga_1_1Layer.html#a7e134c5b4a1a8e442626354d2d869caa">connection_type</a>(int k) const </td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classsinga_1_1Layer.html#ad443a1e7f957dad71fd0c9b356a53c20">data</a>(const Layer *from=nullptr) const </td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>data_</b> (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classsinga_1_1Layer.html#a2c5aeabbc26770bcff169dd907e9c737">dstlayers</a>() const </td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>dstlayers_</b> (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>dstlayers_size</b>() const  (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classsinga_1_1Layer.html#aff0688e641c845aee9964a3d96172731">GetParams</a>()</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>grad</b>(const Layer *from=nullptr) const  (defined in <a class="el" href="classsinga_1_1LossLayer.html">singa::LossLayer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1LossLayer.html">singa::LossLayer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>grad_</b> (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classsinga_1_1Layer.html#aeec3259af3b38227d4e3b3c5f5340573">Init</a>(const LayerProto &amp;proto)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classsinga_1_1Layer.html#abc49f57fad4091d99578512c9d24d436">Init</a>(const Layer &amp;other, const vector&lt; int &gt; &amp;shape)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_bridgedstlayer</b>() const  (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_bridgesrclayer</b>() const  (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_datalayer</b>() const  (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>is_losslayer</b>() const  (defined in <a class="el" href="classsinga_1_1LossLayer.html">singa::LossLayer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1LossLayer.html">singa::LossLayer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>is_parserlayer</b>() const  (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Layer</b>() (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>layer_proto_</b> (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>locationid</b>() const  (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>metric</b>() const  (defined in <a class="el" href="classsinga_1_1LossLayer.html">singa::LossLayer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1LossLayer.html">singa::LossLayer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>metric_</b> (defined in <a class="el" href="classsinga_1_1LossLayer.html">singa::LossLayer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1LossLayer.html">singa::LossLayer</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>mutable_data</b>(const Layer *from=nullptr) (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classsinga_1_1LossLayer.html#aaedd08096c3e1f2bae5cccf75cdf3382">mutable_grad</a>(const Layer *layer=nullptr)</td><td class="entry"><a class="el" href="classsinga_1_1LossLayer.html">singa::LossLayer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classsinga_1_1Layer.html#abc76f037afc13a17ab07082cfae945de">name</a>() const </td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>name_</b> (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>partitiionid</b>() const  (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classsinga_1_1Layer.html#a12d268e424e4affada0d5b85ea6d2359">partition_dimension</a>() const </td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classsinga_1_1Layer.html#ab3c0e1047f36e2fb783a6fd3d4eabd73">partition_type</a>() const </td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classsinga_1_1Layer.html#addab6c99866d34001471f86aede7f6e8">set_locationid</a>(int id)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>set_name</b>(string name) (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classsinga_1_1Layer.html#af177cc1bdfc8d57b6992855bf437ef9a">set_partitionid</a>(int id)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classsinga_1_1LossLayer.html#a16f16d5b289cb2d4bee9a9bee21e3b7c">Setup</a>(const LayerProto &amp;proto, const vector&lt; SLayer &gt; &amp;srclayers)=0</td><td class="entry"><a class="el" href="classsinga_1_1LossLayer.html">singa::LossLayer</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classsinga_1_1Layer.html#ae691995f08f16d01739f98b6d9bd0335">singa::Layer::Setup</a>()</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classsinga_1_1LossLayer.html#adefb43c93a024c3b7fc558abc291dc49">SetupAfterPartition</a>(const LayerProto &amp;proto, const vector&lt; int &gt; &amp;shape, const vector&lt; SLayer &gt; &amp;srclayers)=0</td><td class="entry"><a class="el" href="classsinga_1_1LossLayer.html">singa::LossLayer</a></td><td class="entry"><span class="mlabel">pure virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classsinga_1_1Layer.html#a50fbb59219c1eeb5559431e1719e1f97">singa::Layer::SetupAfterPartition</a>()</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>shape</b>(const Layer *layer=nullptr) const  (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classsinga_1_1Layer.html#a836817f842419098c53fff371ae8fc80">srclayers</a>() const </td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>srclayers_</b> (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>srclayers_size</b>() const  (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classsinga_1_1Layer.html#aa029c17a260a114802c46d9faa347b7f">ToProto</a>(LayerProto *layer_proto, bool copyData)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>type</b>() const  (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~Layer</b>() (defined in <a class="el" href="classsinga_1_1Layer.html">singa::Layer</a>)</td><td class="entry"><a class="el" href="classsinga_1_1Layer.html">singa::Layer</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Thu May 7 2015 17:15:41 for Apache SINGA by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.6
+</small></address>
+</body>
+</html>