blob: 3832d75a32c5bd0641c1cb7a90cf040f40145bc8 [file] [log] [blame]
<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Apache Singa: /home/moaz/incubator-singa/include/singa/model/feed_forward_net.h Source File</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/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></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="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Apache Singa
</div>
<div id="projectbrief">A General Distributed Deep Learning Library</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</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"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_14a988756d30161f7e1f48b05d03905d.html">singa</a></li><li class="navelem"><a class="el" href="dir_1ed15e94f94d348ba7de93ac6315cc91.html">model</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">feed_forward_net.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#ifndef SINGA_MODEL_FEED_FORWARD_NET_H_</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#define SINGA_MODEL_FEED_FORWARD_NET_H_</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;singa/model/layer.h&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;singa/model/loss.h&quot;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;singa/model/metric.h&quot;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;singa/model/updater.h&quot;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;thread&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacesinga.html">singa</a> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="classsinga_1_1FeedForwardNet.html"> 31</a></span>&#160;<span class="keyword">class </span><a class="code" href="classsinga_1_1FeedForwardNet.html">FeedForwardNet</a> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <a class="code" href="classsinga_1_1FeedForwardNet.html">FeedForwardNet</a>() = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="classsinga_1_1FeedForwardNet.html#a29e8b40d21d2aa9983c5b87231095edc">~FeedForwardNet</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; std::shared_ptr&lt;Layer&gt; <a class="code" href="classsinga_1_1FeedForwardNet.html#a3802c112004a7587c6f61ef07c6fb776">Add</a>(std::shared_ptr&lt;Layer&gt; layer);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">// TODO(wangwei) add ConcatenateLayer and SliceLayer</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">// AddConcatenateLayer(vector&lt;Layer*&gt; src, Layer *dst);</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="comment">// AddSliceLayer(Layer* layer, vector&lt;Layer*&gt; dst);</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; std::shared_ptr&lt;Layer&gt; <a class="code" href="classsinga_1_1FeedForwardNet.html#a3802c112004a7587c6f61ef07c6fb776">Add</a>(<span class="keyword">const</span> LayerConf&amp; conf,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> Shape* sample_shape = <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classsinga_1_1FeedForwardNet.html#ae1a14998b17a633b3106eeddf33b4eb2">Compile</a>(<span class="keywordtype">bool</span> shuffle, <a class="code" href="classsinga_1_1Optimizer.html">Optimizer</a>* opt, <a class="code" href="classsinga_1_1Loss.html">Loss</a>* loss, <a class="code" href="classsinga_1_1Metric.html">Metric</a>* metric);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classsinga_1_1FeedForwardNet.html#ae1a14998b17a633b3106eeddf33b4eb2">Compile</a>(<span class="keywordtype">bool</span> shuffle, <span class="keywordtype">bool</span> to_register, std::shared_ptr&lt;Updater&gt; updater,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classsinga_1_1Loss.html">Loss</a>* loss, <a class="code" href="classsinga_1_1Metric.html">Metric</a>* metric);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classsinga_1_1FeedForwardNet.html#a32ef60dad6226d6c03e5917083be5830">Train</a>(<span class="keywordtype">size_t</span> batchsize, <span class="keywordtype">int</span> nb_epoch, <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; x, <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; y,</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">float</span> val_split = 0.0f);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classsinga_1_1FeedForwardNet.html#a32ef60dad6226d6c03e5917083be5830">Train</a>(<span class="keywordtype">size_t</span> batchsize, <span class="keywordtype">int</span> nb_epoch, <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; x, <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; y,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; val_x, <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; val_y);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keyword">const</span> std::pair&lt;float, float&gt; <a class="code" href="classsinga_1_1FeedForwardNet.html#a6906ac848b6d934fe0ce515dddc386ad">TrainOnBatch</a>(<span class="keywordtype">int</span> epoch, <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; x,</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; y);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; std::pair&lt;Tensor, Tensor&gt; <a class="code" href="classsinga_1_1FeedForwardNet.html#aa7c1e721ff9ca9f1a8e11ae9855e69af">Evaluate</a>(<span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; x, <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; y,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordtype">size_t</span> batchsize = 128);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; std::pair&lt;Tensor, Tensor&gt; <a class="code" href="classsinga_1_1FeedForwardNet.html#a7c74012b7c57f51a5fb2218d82a0fdff">EvaluateOnBatch</a>(<span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; x, <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; y);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a> <a class="code" href="classsinga_1_1FeedForwardNet.html#a0cd9bb19e17ac2c54f44503459679ccb">Predict</a>(<span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; x, <span class="keywordtype">size_t</span> batchsize = 128);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a> <a class="code" href="classsinga_1_1FeedForwardNet.html#a63bf8f4ce71653773137d48a71615209">PredictOnBatch</a>(<span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; x);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a> <a class="code" href="classsinga_1_1FeedForwardNet.html#a9c84ffddc1f721fd8068e316e164683a">Forward</a>(<span class="keywordtype">int</span> flag, <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; x);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">const</span> vector&lt;Tensor&gt; <a class="code" href="classsinga_1_1FeedForwardNet.html#a49e566021fc2e388b7b4bdb0bb84ce53">Backward</a>(<span class="keywordtype">int</span> flag, <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; grad);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="classsinga_1_1FeedForwardNet.html">FeedForwardNet</a> <a class="code" href="classsinga_1_1FeedForwardNet.html#a790aeb0ab8f3e0b91f4fc6bdecf55f4e">Clone</a>(std::shared_ptr&lt;Device&gt; device);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classsinga_1_1FeedForwardNet.html#a165e4e2bad62e2ad6fb9dcaed1e2b568">ToDevice</a>(std::shared_ptr&lt;Device&gt; device);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordtype">void</span> ToHost() { <a class="code" href="classsinga_1_1FeedForwardNet.html#a165e4e2bad62e2ad6fb9dcaed1e2b568">ToDevice</a>(<a class="code" href="namespacesinga.html#af5fd1cb4e1a4b5ae9bba1377b034eb8d">defaultDevice</a>); }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classsinga_1_1FeedForwardNet.html#a554d848ec434290b2de971c91c0f2e83">AsType</a>(DataType dtype);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classsinga_1_1FeedForwardNet.html#a15306a1719ecd371e7da99d387dbf80c"> 135</a></span>&#160; std::thread <a class="code" href="classsinga_1_1FeedForwardNet.html#a15306a1719ecd371e7da99d387dbf80c">TrainThread</a>(<span class="keywordtype">size_t</span> batchsize, <span class="keywordtype">int</span> nb_epoch, <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; x,</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; y, <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; val_x,</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; val_y) {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> std::thread(</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; [=]() { <a class="code" href="classsinga_1_1FeedForwardNet.html#a32ef60dad6226d6c03e5917083be5830">Train</a>(batchsize, nb_epoch, x, y, val_x, val_y); });</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classsinga_1_1FeedForwardNet.html#a62e80931af5311dda492f838f4274dcd"> 143</a></span>&#160; std::thread <a class="code" href="classsinga_1_1FeedForwardNet.html#a62e80931af5311dda492f838f4274dcd">TrainThread</a>(<span class="keywordtype">size_t</span> batchsize, <span class="keywordtype">int</span> nb_epoch, <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; x,</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">const</span> <a class="code" href="classsinga_1_1Tensor.html">Tensor</a>&amp; y) {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> std::thread([=]() { <a class="code" href="classsinga_1_1FeedForwardNet.html#a32ef60dad6226d6c03e5917083be5830">Train</a>(batchsize, nb_epoch, x, y); });</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keyword">const</span> vector&lt;std::shared_ptr&lt;Layer&gt;&gt; layers()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> layers_; }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">const</span> vector&lt;string&gt; GetParamNames() <span class="keyword">const</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">const</span> vector&lt;ParamSpec&gt; GetParamSpecs() <span class="keyword">const</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">const</span> vector&lt;Tensor&gt; GetParamValues() <span class="keyword">const</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; vector&lt;std::shared_ptr&lt;Layer&gt;&gt; layers_;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; std::shared_ptr&lt;Updater&gt; updater_;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="classsinga_1_1Loss.html">Loss</a>* loss_;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="classsinga_1_1Metric.html">Metric</a>* metric_;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordtype">bool</span> shuffle_ = <span class="keyword">true</span>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="classsinga_1_1Device.html">Device</a>* device_ = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; DataType dtype_ = kFloat32;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;};</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;} <span class="comment">/* singa */</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="preprocessor">#endif // SINGA_MODEL_FEED_FORWARD_NET_H_</span></div><div class="ttc" id="classsinga_1_1FeedForwardNet_html_a29e8b40d21d2aa9983c5b87231095edc"><div class="ttname"><a href="classsinga_1_1FeedForwardNet.html#a29e8b40d21d2aa9983c5b87231095edc">singa::FeedForwardNet::~FeedForwardNet</a></div><div class="ttdeci">~FeedForwardNet()</div><div class="ttdoc">Delete all layers. </div></div>
<div class="ttc" id="classsinga_1_1FeedForwardNet_html_a49e566021fc2e388b7b4bdb0bb84ce53"><div class="ttname"><a href="classsinga_1_1FeedForwardNet.html#a49e566021fc2e388b7b4bdb0bb84ce53">singa::FeedForwardNet::Backward</a></div><div class="ttdeci">const vector&lt; Tensor &gt; Backward(int flag, const Tensor &amp;grad)</div><div class="ttdoc">Backward layers one by one using the gradient batch &amp;#39;grad&amp;#39;. </div></div>
<div class="ttc" id="classsinga_1_1FeedForwardNet_html_a63bf8f4ce71653773137d48a71615209"><div class="ttname"><a href="classsinga_1_1FeedForwardNet.html#a63bf8f4ce71653773137d48a71615209">singa::FeedForwardNet::PredictOnBatch</a></div><div class="ttdeci">const Tensor PredictOnBatch(const Tensor &amp;x)</div><div class="ttdoc">Predict for one batch data. </div></div>
<div class="ttc" id="classsinga_1_1Tensor_html"><div class="ttname"><a href="classsinga_1_1Tensor.html">singa::Tensor</a></div><div class="ttdoc">A Tensor instance is a multi-dimensional array resident on a Device (default device is the host CPU)...</div><div class="ttdef"><b>Definition:</b> tensor.h:56</div></div>
<div class="ttc" id="classsinga_1_1FeedForwardNet_html_a32ef60dad6226d6c03e5917083be5830"><div class="ttname"><a href="classsinga_1_1FeedForwardNet.html#a32ef60dad6226d6c03e5917083be5830">singa::FeedForwardNet::Train</a></div><div class="ttdeci">void Train(size_t batchsize, int nb_epoch, const Tensor &amp;x, const Tensor &amp;y, float val_split=0.0f)</div><div class="ttdoc">Conduct the training giving the training data &amp;#39;x&amp;#39; and label &amp;#39;y&amp;#39;. </div></div>
<div class="ttc" id="classsinga_1_1FeedForwardNet_html_a6906ac848b6d934fe0ce515dddc386ad"><div class="ttname"><a href="classsinga_1_1FeedForwardNet.html#a6906ac848b6d934fe0ce515dddc386ad">singa::FeedForwardNet::TrainOnBatch</a></div><div class="ttdeci">const std::pair&lt; float, float &gt; TrainOnBatch(int epoch, const Tensor &amp;x, const Tensor &amp;y)</div><div class="ttdoc">Train the neural net over one batch of training data. </div></div>
<div class="ttc" id="classsinga_1_1FeedForwardNet_html_a7c74012b7c57f51a5fb2218d82a0fdff"><div class="ttname"><a href="classsinga_1_1FeedForwardNet.html#a7c74012b7c57f51a5fb2218d82a0fdff">singa::FeedForwardNet::EvaluateOnBatch</a></div><div class="ttdeci">std::pair&lt; Tensor, Tensor &gt; EvaluateOnBatch(const Tensor &amp;x, const Tensor &amp;y)</div><div class="ttdoc">Evaluate the neural net for one batch of data. </div></div>
<div class="ttc" id="classsinga_1_1FeedForwardNet_html_a62e80931af5311dda492f838f4274dcd"><div class="ttname"><a href="classsinga_1_1FeedForwardNet.html#a62e80931af5311dda492f838f4274dcd">singa::FeedForwardNet::TrainThread</a></div><div class="ttdeci">std::thread TrainThread(size_t batchsize, int nb_epoch, const Tensor &amp;x, const Tensor &amp;y)</div><div class="ttdoc">A wrapper method to spawn a thread to execute Train() method. </div><div class="ttdef"><b>Definition:</b> feed_forward_net.h:143</div></div>
<div class="ttc" id="classsinga_1_1FeedForwardNet_html_a15306a1719ecd371e7da99d387dbf80c"><div class="ttname"><a href="classsinga_1_1FeedForwardNet.html#a15306a1719ecd371e7da99d387dbf80c">singa::FeedForwardNet::TrainThread</a></div><div class="ttdeci">std::thread TrainThread(size_t batchsize, int nb_epoch, const Tensor &amp;x, const Tensor &amp;y, const Tensor &amp;val_x, const Tensor &amp;val_y)</div><div class="ttdoc">A wrapper method to spawn a thread to execute Train() method. </div><div class="ttdef"><b>Definition:</b> feed_forward_net.h:135</div></div>
<div class="ttc" id="classsinga_1_1Device_html"><div class="ttname"><a href="classsinga_1_1Device.html">singa::Device</a></div><div class="ttdoc">Allocate memory and execute Tensor operations. </div><div class="ttdef"><b>Definition:</b> device.h:56</div></div>
<div class="ttc" id="classsinga_1_1FeedForwardNet_html_ae1a14998b17a633b3106eeddf33b4eb2"><div class="ttname"><a href="classsinga_1_1FeedForwardNet.html#ae1a14998b17a633b3106eeddf33b4eb2">singa::FeedForwardNet::Compile</a></div><div class="ttdeci">void Compile(bool shuffle, Optimizer *opt, Loss *loss, Metric *metric)</div><div class="ttdoc">Set some fields used for training and evaluating the neural net. </div></div>
<div class="ttc" id="classsinga_1_1Loss_html"><div class="ttname"><a href="classsinga_1_1Loss.html">singa::Loss</a></div><div class="ttdoc">The base loss class, which declares the APIs for computing the objective score (loss) for a pair of p...</div><div class="ttdef"><b>Definition:</b> loss.h:31</div></div>
<div class="ttc" id="namespacesinga_html_af5fd1cb4e1a4b5ae9bba1377b034eb8d"><div class="ttname"><a href="namespacesinga.html#af5fd1cb4e1a4b5ae9bba1377b034eb8d">singa::defaultDevice</a></div><div class="ttdeci">std::shared_ptr&lt; Device &gt; defaultDevice</div><div class="ttdoc">a singleton CppDevice as the host for all devices. </div></div>
<div class="ttc" id="classsinga_1_1FeedForwardNet_html_aa7c1e721ff9ca9f1a8e11ae9855e69af"><div class="ttname"><a href="classsinga_1_1FeedForwardNet.html#aa7c1e721ff9ca9f1a8e11ae9855e69af">singa::FeedForwardNet::Evaluate</a></div><div class="ttdeci">std::pair&lt; Tensor, Tensor &gt; Evaluate(const Tensor &amp;x, const Tensor &amp;y, size_t batchsize=128)</div><div class="ttdoc">Evaluate the neural net with given data. </div></div>
<div class="ttc" id="classsinga_1_1FeedForwardNet_html_a554d848ec434290b2de971c91c0f2e83"><div class="ttname"><a href="classsinga_1_1FeedForwardNet.html#a554d848ec434290b2de971c91c0f2e83">singa::FeedForwardNet::AsType</a></div><div class="ttdeci">void AsType(DataType dtype)</div><div class="ttdoc">Set the data type of each layer. </div></div>
<div class="ttc" id="classsinga_1_1FeedForwardNet_html_a165e4e2bad62e2ad6fb9dcaed1e2b568"><div class="ttname"><a href="classsinga_1_1FeedForwardNet.html#a165e4e2bad62e2ad6fb9dcaed1e2b568">singa::FeedForwardNet::ToDevice</a></div><div class="ttdeci">void ToDevice(std::shared_ptr&lt; Device &gt; device)</div><div class="ttdoc">Move the layer data to the given device. </div></div>
<div class="ttc" id="classsinga_1_1FeedForwardNet_html_a9c84ffddc1f721fd8068e316e164683a"><div class="ttname"><a href="classsinga_1_1FeedForwardNet.html#a9c84ffddc1f721fd8068e316e164683a">singa::FeedForwardNet::Forward</a></div><div class="ttdeci">const Tensor Forward(int flag, const Tensor &amp;x)</div><div class="ttdoc">Forward layers one by one using the data batch &amp;#39;x&amp;#39;. </div></div>
<div class="ttc" id="classsinga_1_1FeedForwardNet_html_a0cd9bb19e17ac2c54f44503459679ccb"><div class="ttname"><a href="classsinga_1_1FeedForwardNet.html#a0cd9bb19e17ac2c54f44503459679ccb">singa::FeedForwardNet::Predict</a></div><div class="ttdeci">const Tensor Predict(const Tensor &amp;x, size_t batchsize=128)</div><div class="ttdoc">Predict the probability distributation over candicate classes for each data sample. </div></div>
<div class="ttc" id="classsinga_1_1Metric_html"><div class="ttname"><a href="classsinga_1_1Metric.html">singa::Metric</a></div><div class="ttdoc">The base metric class, which declares the APIs for computing the performance evaluation metrics given...</div><div class="ttdef"><b>Definition:</b> metric.h:32</div></div>
<div class="ttc" id="namespacesinga_html"><div class="ttname"><a href="namespacesinga.html">singa</a></div><div class="ttdoc">Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements...</div><div class="ttdef"><b>Definition:</b> common.h:48</div></div>
<div class="ttc" id="classsinga_1_1FeedForwardNet_html"><div class="ttname"><a href="classsinga_1_1FeedForwardNet.html">singa::FeedForwardNet</a></div><div class="ttdoc">The feed-forward neural net. </div><div class="ttdef"><b>Definition:</b> feed_forward_net.h:31</div></div>
<div class="ttc" id="classsinga_1_1Optimizer_html"><div class="ttname"><a href="classsinga_1_1Optimizer.html">singa::Optimizer</a></div><div class="ttdoc">The base class for gradient descent algorithms used to update the model parameters in order to optimi...</div><div class="ttdef"><b>Definition:</b> optimizer.h:41</div></div>
<div class="ttc" id="classsinga_1_1FeedForwardNet_html_a790aeb0ab8f3e0b91f4fc6bdecf55f4e"><div class="ttname"><a href="classsinga_1_1FeedForwardNet.html#a790aeb0ab8f3e0b91f4fc6bdecf55f4e">singa::FeedForwardNet::Clone</a></div><div class="ttdeci">FeedForwardNet Clone(std::shared_ptr&lt; Device &gt; device)</div><div class="ttdoc">Clone the neuaral net by cloning every layer to the given device. </div></div>
<div class="ttc" id="classsinga_1_1FeedForwardNet_html_a3802c112004a7587c6f61ef07c6fb776"><div class="ttname"><a href="classsinga_1_1FeedForwardNet.html#a3802c112004a7587c6f61ef07c6fb776">singa::FeedForwardNet::Add</a></div><div class="ttdeci">std::shared_ptr&lt; Layer &gt; Add(std::shared_ptr&lt; Layer &gt; layer)</div><div class="ttdoc">Add a layer with the assumption that. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Apr 22 2019 12:27:05 for Apache Singa by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>