mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-05-02 14:31:57 +08:00
Documentation for c26eea874d
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.12.0"/>
|
||||
<meta name="generator" content="Doxygen 1.13.2"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>TheAlgorithms/C++: machine_learning/kohonen_som_trace.cpp File Reference</title>
|
||||
<link rel="icon" href="../../favicon.svg" type="image/x-icon" />
|
||||
@@ -60,7 +60,7 @@ window.MathJax = {
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.12.0 -->
|
||||
<!-- Generated by Doxygen 1.13.2 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
@@ -180,6 +180,8 @@ Functions</h2></td></tr>
|
||||
<tr class="separator:a2256c10b16edba377b64a44b6c656908"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a3c04138a5bfe5d72780bb7e82a18e627" id="r_a3c04138a5bfe5d72780bb7e82a18e627"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="#a3c04138a5bfe5d72780bb7e82a18e627">main</a> (int argc, char **argv)</td></tr>
|
||||
<tr class="separator:a3c04138a5bfe5d72780bb7e82a18e627"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a042f435bca0839e721fc1574a61e8da3" id="r_a042f435bca0839e721fc1574a61e8da3"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a> (const std::vector< std::valarray< double > > &X, std::vector< std::valarray< double > > *W, double alpha_min)</td></tr>
|
||||
<tr class="separator:a042f435bca0839e721fc1574a61e8da3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p><a href="https://en.wikipedia.org/wiki/Self-organizing_map" target="_blank">Kohonen self organizing map</a> (data tracing) </p>
|
||||
@@ -227,6 +229,70 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<a id="a042f435bca0839e721fc1574a61e8da3" name="a042f435bca0839e721fc1574a61e8da3"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a042f435bca0839e721fc1574a61e8da3">◆ </a></span>kohonen_som_tracer()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void machine_learning::kohonen_som_tracer </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const std::vector< std::valarray< double > > &</td> <td class="paramname"><span class="paramname"><em>X</em></span>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">std::vector< std::valarray< double > > *</td> <td class="paramname"><span class="paramname"><em>W</em></span>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">double</td> <td class="paramname"><span class="paramname"><em>alpha_min</em></span> )</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Apply incremental algorithm with updating neighborhood and learning rates on all samples in the given datset.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramdir">[in]</td><td class="paramname">X</td><td>data set </td></tr>
|
||||
<tr><td class="paramdir">[in,out]</td><td class="paramname">W</td><td>weights matrix </td></tr>
|
||||
<tr><td class="paramdir">[in]</td><td class="paramname">alpha_min</td><td>terminal value of alpha </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00149">149</a> of file <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html">kohonen_som_trace.cpp</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 151</span> {</div>
|
||||
<div class="line"><span class="lineno"> 152</span> <span class="keywordtype">int</span> num_samples = X.size(); <span class="comment">// number of rows</span></div>
|
||||
<div class="line"><span class="lineno"> 153</span> <span class="comment">// int num_features = X[0].size(); // number of columns</span></div>
|
||||
<div class="line"><span class="lineno"> 154</span> <span class="keywordtype">int</span> num_out = W->size(); <span class="comment">// number of rows</span></div>
|
||||
<div class="line"><span class="lineno"> 155</span> <span class="keywordtype">int</span> R = num_out >> 2, iter = 0;</div>
|
||||
<div class="line"><span class="lineno"> 156</span> <span class="keywordtype">double</span> alpha = 1.f;</div>
|
||||
<div class="line"><span class="lineno"> 157</span> </div>
|
||||
<div class="line"><span class="lineno"> 158</span> std::valarray<double> D(num_out);</div>
|
||||
<div class="line"><span class="lineno"> 159</span> </div>
|
||||
<div class="line"><span class="lineno"> 160</span> <span class="comment">// Loop alpha from 1 to slpha_min</span></div>
|
||||
<div class="line"><span class="lineno"> 161</span> <span class="keywordflow">do</span> {</div>
|
||||
<div class="line"><span class="lineno"> 162</span> <span class="comment">// Loop for each sample pattern in the data set</span></div>
|
||||
<div class="line"><span class="lineno"> 163</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> sample = 0; sample < num_samples; sample++) {</div>
|
||||
<div class="line"><span class="lineno"> 164</span> <span class="comment">// update weights for the current input pattern sample</span></div>
|
||||
<div class="line"><span class="lineno"> 165</span> <a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#ae868ad43698a1d69ba46ea3827d7d2c3">update_weights</a>(X[sample], W, &D, alpha, R);</div>
|
||||
<div class="line"><span class="lineno"> 166</span> }</div>
|
||||
<div class="line"><span class="lineno"> 167</span> </div>
|
||||
<div class="line"><span class="lineno"> 168</span> <span class="comment">// every 10th iteration, reduce the neighborhood range</span></div>
|
||||
<div class="line"><span class="lineno"> 169</span> <span class="keywordflow">if</span> (iter % 10 == 0 && R > 1) {</div>
|
||||
<div class="line"><span class="lineno"> 170</span> R--;</div>
|
||||
<div class="line"><span class="lineno"> 171</span> }</div>
|
||||
<div class="line"><span class="lineno"> 172</span> </div>
|
||||
<div class="line"><span class="lineno"> 173</span> alpha -= 0.01;</div>
|
||||
<div class="line"><span class="lineno"> 174</span> iter++;</div>
|
||||
<div class="line"><span class="lineno"> 175</span> } <span class="keywordflow">while</span> (alpha > alpha_min);</div>
|
||||
<div class="line"><span class="lineno"> 176</span>}</div>
|
||||
<div class="ttc" id="anamespacemachine__learning_html_ae868ad43698a1d69ba46ea3827d7d2c3"><div class="ttname"><a href="../../d8/d77/namespacemachine__learning.html#ae868ad43698a1d69ba46ea3827d7d2c3">machine_learning::update_weights</a></div><div class="ttdeci">double update_weights(const std::valarray< double > &X, std::vector< std::vector< std::valarray< double > > > *W, std::vector< std::valarray< double > > *D, double alpha, int R)</div><div class="ttdef"><b>Definition</b> <a href="../../d4/def/kohonen__som__topology_8cpp_source.html#l00200">kohonen_som_topology.cpp:200</a></div></div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
<a id="a3c04138a5bfe5d72780bb7e82a18e627" name="a3c04138a5bfe5d72780bb7e82a18e627"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a3c04138a5bfe5d72780bb7e82a18e627">◆ </a></span>main()</h2>
|
||||
|
||||
@@ -315,7 +381,7 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00233">233</a> of file <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html">kohonen_som_trace.cpp</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 233</span> {</div>
|
||||
<div class="line"><span class="lineno"> 234</span> <span class="keywordtype">int</span> j = 0, <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> = 500;</div>
|
||||
<div class="line"><span class="lineno"> 234</span> <span class="keywordtype">int</span> j = 0, N = 500;</div>
|
||||
<div class="line"><span class="lineno"> 235</span> <span class="keywordtype">int</span> features = 2;</div>
|
||||
<div class="line"><span class="lineno"> 236</span> <span class="keywordtype">int</span> num_out = 50;</div>
|
||||
<div class="line"><span class="lineno"> 237</span> std::vector<std::valarray<double>> X(N);</div>
|
||||
@@ -341,13 +407,13 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
|
||||
<div class="line"><span class="lineno"> 257</span> <a class="code hl_function" href="#ae571600aa42a81bc14a4a602ea5ff00d">test_circle</a>(&X); <span class="comment">// create test data around circumference of a circle</span></div>
|
||||
<div class="line"><span class="lineno"> 258</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">"test1.csv"</span>, X); <span class="comment">// save test data points</span></div>
|
||||
<div class="line"><span class="lineno"> 259</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">"w11.csv"</span>, W); <span class="comment">// save initial random weights</span></div>
|
||||
<div class="line"><span class="lineno"> 260</span> kohonen_som_tracer(X, &W, 0.1); <span class="comment">// train the SOM</span></div>
|
||||
<div class="line"><span class="lineno"> 260</span> <a class="code hl_function" href="#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a>(X, &W, 0.1); <span class="comment">// train the SOM</span></div>
|
||||
<div class="line"><span class="lineno"> 261</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">"w12.csv"</span>, W); <span class="comment">// save the resultant weights</span></div>
|
||||
<div class="line"><span class="lineno"> 262</span>}</div>
|
||||
<div class="ttc" id="agroup__machine__learning_html_gae0208548f8b393528e5db01717e88e67"><div class="ttname"><a href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a></div><div class="ttdeci">int save_nd_data(const char *fname, const std::vector< std::valarray< double > > &X)</div><div class="ttdef"><b>Definition</b> <a href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00058">kohonen_som_trace.cpp:58</a></div></div>
|
||||
<div class="ttc" id="agroup__machine__learning_html_gaf5ce14f026d6d231bef29161bac2b485"><div class="ttname"><a href="../../d9/d66/group__machine__learning.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a></div><div class="ttdeci">double _random(double a, double b)</div><div class="ttdef"><b>Definition</b> <a href="../../d4/def/kohonen__som__topology_8cpp_source.html#l00053">kohonen_som_topology.cpp:53</a></div></div>
|
||||
<div class="ttc" id="akohonen__som__trace_8cpp_html_a042f435bca0839e721fc1574a61e8da3"><div class="ttname"><a href="#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a></div><div class="ttdeci">void kohonen_som_tracer(const std::vector< std::valarray< double > > &X, std::vector< std::valarray< double > > *W, double alpha_min)</div><div class="ttdef"><b>Definition</b> <a href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00149">kohonen_som_trace.cpp:149</a></div></div>
|
||||
<div class="ttc" id="akohonen__som__trace_8cpp_html_ae571600aa42a81bc14a4a602ea5ff00d"><div class="ttname"><a href="#ae571600aa42a81bc14a4a602ea5ff00d">test_circle</a></div><div class="ttdeci">void test_circle(std::vector< std::valarray< double > > *data)</div><div class="ttdef"><b>Definition</b> <a href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00196">kohonen_som_trace.cpp:196</a></div></div>
|
||||
<div class="ttc" id="asparse__table_8cpp_html_a10f3ffb3f6f7e1b83d556b9c8de89a5d"><div class="ttname"><a href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">data_structures::sparse_table::N</a></div><div class="ttdeci">constexpr uint32_t N</div><div class="ttdoc">A struct to represent sparse table for min() as their invariant function, for the given array A....</div><div class="ttdef"><b>Definition</b> <a href="../../d8/dab/sparse__table_8cpp_source.html#l00048">sparse_table.cpp:48</a></div></div>
|
||||
</div><!-- fragment -->
|
||||
</div>
|
||||
</div>
|
||||
@@ -379,7 +445,7 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00315">315</a> of file <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html">kohonen_som_trace.cpp</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 315</span> {</div>
|
||||
<div class="line"><span class="lineno"> 316</span> <span class="keywordtype">int</span> j = 0, <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> = 500;</div>
|
||||
<div class="line"><span class="lineno"> 316</span> <span class="keywordtype">int</span> j = 0, N = 500;</div>
|
||||
<div class="line"><span class="lineno"> 317</span> <span class="keywordtype">int</span> features = 2;</div>
|
||||
<div class="line"><span class="lineno"> 318</span> <span class="keywordtype">int</span> num_out = 20;</div>
|
||||
<div class="line"><span class="lineno"> 319</span> std::vector<std::valarray<double>> X(N);</div>
|
||||
@@ -405,7 +471,7 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
|
||||
<div class="line"><span class="lineno"> 339</span> <a class="code hl_function" href="#a53082f2e5bacec40266499da4547309a">test_lamniscate</a>(&X); <span class="comment">// create test data around the lamniscate</span></div>
|
||||
<div class="line"><span class="lineno"> 340</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">"test2.csv"</span>, X); <span class="comment">// save test data points</span></div>
|
||||
<div class="line"><span class="lineno"> 341</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">"w21.csv"</span>, W); <span class="comment">// save initial random weights</span></div>
|
||||
<div class="line"><span class="lineno"> 342</span> kohonen_som_tracer(X, &W, 0.01); <span class="comment">// train the SOM</span></div>
|
||||
<div class="line"><span class="lineno"> 342</span> <a class="code hl_function" href="#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a>(X, &W, 0.01); <span class="comment">// train the SOM</span></div>
|
||||
<div class="line"><span class="lineno"> 343</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">"w22.csv"</span>, W); <span class="comment">// save the resultant weights</span></div>
|
||||
<div class="line"><span class="lineno"> 344</span>}</div>
|
||||
<div class="ttc" id="akohonen__som__trace_8cpp_html_a53082f2e5bacec40266499da4547309a"><div class="ttname"><a href="#a53082f2e5bacec40266499da4547309a">test_lamniscate</a></div><div class="ttdeci">void test_lamniscate(std::vector< std::valarray< double > > *data)</div><div class="ttdef"><b>Definition</b> <a href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00277">kohonen_som_trace.cpp:277</a></div></div>
|
||||
@@ -440,7 +506,7 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00414">414</a> of file <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html">kohonen_som_trace.cpp</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 414</span> {</div>
|
||||
<div class="line"><span class="lineno"> 415</span> <span class="keywordtype">int</span> j = 0, <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> = 200;</div>
|
||||
<div class="line"><span class="lineno"> 415</span> <span class="keywordtype">int</span> j = 0, N = 200;</div>
|
||||
<div class="line"><span class="lineno"> 416</span> <span class="keywordtype">int</span> features = 3;</div>
|
||||
<div class="line"><span class="lineno"> 417</span> <span class="keywordtype">int</span> num_out = 20;</div>
|
||||
<div class="line"><span class="lineno"> 418</span> std::vector<std::valarray<double>> X(N);</div>
|
||||
@@ -466,7 +532,7 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
|
||||
<div class="line"><span class="lineno"> 438</span> <a class="code hl_function" href="#a7154fe319e6033485a8a6cd6f0d8932d">test_3d_classes</a>(&X); <span class="comment">// create test data around the lamniscate</span></div>
|
||||
<div class="line"><span class="lineno"> 439</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">"test3.csv"</span>, X); <span class="comment">// save test data points</span></div>
|
||||
<div class="line"><span class="lineno"> 440</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">"w31.csv"</span>, W); <span class="comment">// save initial random weights</span></div>
|
||||
<div class="line"><span class="lineno"> 441</span> kohonen_som_tracer(X, &W, 0.01); <span class="comment">// train the SOM</span></div>
|
||||
<div class="line"><span class="lineno"> 441</span> <a class="code hl_function" href="#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a>(X, &W, 0.01); <span class="comment">// train the SOM</span></div>
|
||||
<div class="line"><span class="lineno"> 442</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">"w32.csv"</span>, W); <span class="comment">// save the resultant weights</span></div>
|
||||
<div class="line"><span class="lineno"> 443</span>}</div>
|
||||
<div class="ttc" id="akohonen__som__trace_8cpp_html_a7154fe319e6033485a8a6cd6f0d8932d"><div class="ttname"><a href="#a7154fe319e6033485a8a6cd6f0d8932d">test_3d_classes</a></div><div class="ttdeci">void test_3d_classes(std::vector< std::valarray< double > > *data)</div><div class="ttdef"><b>Definition</b> <a href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00359">kohonen_som_trace.cpp:359</a></div></div>
|
||||
@@ -506,7 +572,7 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00359">359</a> of file <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html">kohonen_som_trace.cpp</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 359</span> {</div>
|
||||
<div class="line"><span class="lineno"> 360</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>->size();</div>
|
||||
<div class="line"><span class="lineno"> 360</span> <span class="keyword">const</span> <span class="keywordtype">int</span> N = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>->size();</div>
|
||||
<div class="line"><span class="lineno"> 361</span> <span class="keyword">const</span> <span class="keywordtype">double</span> R = 0.1; <span class="comment">// radius of cluster</span></div>
|
||||
<div class="line"><span class="lineno"> 362</span> <span class="keywordtype">int</span> i = 0;</div>
|
||||
<div class="line"><span class="lineno"> 363</span> <span class="keyword">const</span> <span class="keywordtype">int</span> num_classes = 8;</div>
|
||||
@@ -525,7 +591,7 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
|
||||
<div class="line"><span class="lineno"> 376</span><span class="preprocessor">#ifdef _OPENMP</span></div>
|
||||
<div class="line"><span class="lineno"> 377</span><span class="preprocessor">#pragma omp for</span></div>
|
||||
<div class="line"><span class="lineno"> 378</span><span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><span class="lineno"> 379</span> <span class="keywordflow">for</span> (i = 0; i < <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; i++) {</div>
|
||||
<div class="line"><span class="lineno"> 379</span> <span class="keywordflow">for</span> (i = 0; i < N; i++) {</div>
|
||||
<div class="line"><span class="lineno"> 380</span> <span class="keywordtype">int</span> cls =</div>
|
||||
<div class="line"><span class="lineno"> 381</span> std::rand() % num_classes; <span class="comment">// select a random class for the point</span></div>
|
||||
<div class="line"><span class="lineno"> 382</span> </div>
|
||||
@@ -559,8 +625,7 @@ The compiled code is much slower when compiled with MS Visual C++ 2019 than with
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Creates a random set of points distributed <em>near</em> the circumference of a circle and trains an SOM that finds that circular pattern. The generating function is </p><p class="formulaDsp">
|
||||
\begin{eqnarray*}
|
||||
r &\in& [1-\delta r, 1+\delta r)\\
|
||||
\begin{eqnarray*}r &\in& [1-\delta r, 1+\delta r)\\
|
||||
\theta &\in& [0, 2\pi)\\
|
||||
x &=& r\cos\theta\\
|
||||
y &=& r\sin\theta
|
||||
@@ -575,7 +640,7 @@ y &=& r\sin\theta
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00196">196</a> of file <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html">kohonen_som_trace.cpp</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 196</span> {</div>
|
||||
<div class="line"><span class="lineno"> 197</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>->size();</div>
|
||||
<div class="line"><span class="lineno"> 197</span> <span class="keyword">const</span> <span class="keywordtype">int</span> N = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>->size();</div>
|
||||
<div class="line"><span class="lineno"> 198</span> <span class="keyword">const</span> <span class="keywordtype">double</span> R = 0.75, dr = 0.3;</div>
|
||||
<div class="line"><span class="lineno"> 199</span> <span class="keywordtype">double</span> a_t = 0., b_t = 2.f * M_PI; <span class="comment">// theta random between 0 and 2*pi</span></div>
|
||||
<div class="line"><span class="lineno"> 200</span> <span class="keywordtype">double</span> a_r = R - dr, b_r = R + dr; <span class="comment">// radius random between R-dr and R+dr</span></div>
|
||||
@@ -584,7 +649,7 @@ y &=& r\sin\theta
|
||||
<div class="line"><span class="lineno"> 203</span><span class="preprocessor">#ifdef _OPENMP</span></div>
|
||||
<div class="line"><span class="lineno"> 204</span><span class="preprocessor">#pragma omp for</span></div>
|
||||
<div class="line"><span class="lineno"> 205</span><span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><span class="lineno"> 206</span> <span class="keywordflow">for</span> (i = 0; i < <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; i++) {</div>
|
||||
<div class="line"><span class="lineno"> 206</span> <span class="keywordflow">for</span> (i = 0; i < N; i++) {</div>
|
||||
<div class="line"><span class="lineno"> 207</span> <span class="keywordtype">double</span> r = <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a>(a_r, b_r); <span class="comment">// random radius</span></div>
|
||||
<div class="line"><span class="lineno"> 208</span> <span class="keywordtype">double</span> theta = <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a>(a_t, b_t); <span class="comment">// random theta</span></div>
|
||||
<div class="line"><span class="lineno"> 209</span> <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>[0][i][0] = r * cos(theta); <span class="comment">// convert from polar to cartesian</span></div>
|
||||
@@ -609,8 +674,7 @@ y &=& r\sin\theta
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Creates a random set of points distributed <em>near</em> the locus of the <a href="https://en.wikipedia.org/wiki/Lemniscate_of_Gerono" target="_blank">Lamniscate of Gerono</a>. </p><p class="formulaDsp">
|
||||
\begin{eqnarray*}
|
||||
\delta r &=& 0.2\\
|
||||
\begin{eqnarray*}\delta r &=& 0.2\\
|
||||
\delta x &\in& [-\delta r, \delta r)\\
|
||||
\delta y &\in& [-\delta r, \delta r)\\
|
||||
\theta &\in& [0, \pi)\\
|
||||
@@ -627,14 +691,14 @@ y &=& \delta y + \frac{\sin(2\theta)}{2}
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html#l00277">277</a> of file <a class="el" href="../../d9/d49/kohonen__som__trace_8cpp_source.html">kohonen_som_trace.cpp</a>.</p>
|
||||
<div class="fragment"><div class="line"><span class="lineno"> 277</span> {</div>
|
||||
<div class="line"><span class="lineno"> 278</span> <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a> = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>->size();</div>
|
||||
<div class="line"><span class="lineno"> 278</span> <span class="keyword">const</span> <span class="keywordtype">int</span> N = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>->size();</div>
|
||||
<div class="line"><span class="lineno"> 279</span> <span class="keyword">const</span> <span class="keywordtype">double</span> dr = 0.2;</div>
|
||||
<div class="line"><span class="lineno"> 280</span> <span class="keywordtype">int</span> i = 0;</div>
|
||||
<div class="line"><span class="lineno"> 281</span> </div>
|
||||
<div class="line"><span class="lineno"> 282</span><span class="preprocessor">#ifdef _OPENMP</span></div>
|
||||
<div class="line"><span class="lineno"> 283</span><span class="preprocessor">#pragma omp for</span></div>
|
||||
<div class="line"><span class="lineno"> 284</span><span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><span class="lineno"> 285</span> <span class="keywordflow">for</span> (i = 0; i < <a class="code hl_variable" href="../../d8/dab/sparse__table_8cpp.html#a10f3ffb3f6f7e1b83d556b9c8de89a5d">N</a>; i++) {</div>
|
||||
<div class="line"><span class="lineno"> 285</span> <span class="keywordflow">for</span> (i = 0; i < N; i++) {</div>
|
||||
<div class="line"><span class="lineno"> 286</span> <span class="keywordtype">double</span> dx = <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a>(-dr, dr); <span class="comment">// random change in x</span></div>
|
||||
<div class="line"><span class="lineno"> 287</span> <span class="keywordtype">double</span> dy = <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a>(-dr, dr); <span class="comment">// random change in y</span></div>
|
||||
<div class="line"><span class="lineno"> 288</span> <span class="keywordtype">double</span> theta = <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a>(0, M_PI); <span class="comment">// random theta</span></div>
|
||||
@@ -651,7 +715,7 @@ y &=& \delta y + \frac{\sin(2\theta)}{2}
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="../../dir_3343723ae086de42ee4ca9774da3a13f.html">machine_learning</a></li><li class="navelem"><a class="el" href="../../d9/d49/kohonen__som__trace_8cpp.html">kohonen_som_trace.cpp</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -3,6 +3,7 @@ var kohonen__som__trace_8cpp =
|
||||
[ "_random", "d9/d66/group__machine__learning.html#gaf5ce14f026d6d231bef29161bac2b485", null ],
|
||||
[ "get_clock_diff", "d9/d49/kohonen__som__trace_8cpp.html#a2256c10b16edba377b64a44b6c656908", null ],
|
||||
[ "kohonen_som_tracer", "d9/d49/kohonen__som__trace_8cpp.html#a042f435bca0839e721fc1574a61e8da3", null ],
|
||||
[ "machine_learning::kohonen_som_tracer", "d8/d77/namespacemachine__learning.html#a042f435bca0839e721fc1574a61e8da3", null ],
|
||||
[ "main", "d9/d49/kohonen__som__trace_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627", null ],
|
||||
[ "save_nd_data", "d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67", null ],
|
||||
[ "test1", "d9/d49/kohonen__som__trace_8cpp.html#a1440a7779ac56f47a3f355ce4a8c7da0", null ],
|
||||
@@ -11,5 +12,5 @@ var kohonen__som__trace_8cpp =
|
||||
[ "test_3d_classes", "d9/d49/kohonen__som__trace_8cpp.html#a7154fe319e6033485a8a6cd6f0d8932d", null ],
|
||||
[ "test_circle", "d9/d49/kohonen__som__trace_8cpp.html#ae571600aa42a81bc14a4a602ea5ff00d", null ],
|
||||
[ "test_lamniscate", "d9/d49/kohonen__som__trace_8cpp.html#a53082f2e5bacec40266499da4547309a", null ],
|
||||
[ "update_weights", "d9/d49/kohonen__som__trace_8cpp.html#aa6aac06ccf128b0a9c55c9ee1a8e5631", null ]
|
||||
[ "machine_learning::update_weights", "d8/d77/namespacemachine__learning.html#aa6aac06ccf128b0a9c55c9ee1a8e5631", null ]
|
||||
];
|
||||
@@ -4,7 +4,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.12.0"/>
|
||||
<meta name="generator" content="Doxygen 1.13.2"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>TheAlgorithms/C++: machine_learning/kohonen_som_trace.cpp Source File</title>
|
||||
<link rel="icon" href="../../favicon.svg" type="image/x-icon" />
|
||||
@@ -60,7 +60,7 @@ window.MathJax = {
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.12.0 -->
|
||||
<!-- Generated by Doxygen 1.13.2 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
@@ -124,7 +124,7 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
|
||||
<div class="headertitle"><div class="title">kohonen_som_trace.cpp</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="../../d9/d49/kohonen__som__trace_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span> </div>
|
||||
<a href="../../d9/d49/kohonen__som__trace_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span></div>
|
||||
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#define _USE_MATH_DEFINES </span><span class="comment">// required for MS Visual C++</span></div>
|
||||
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="preprocessor">#include <algorithm></span></div>
|
||||
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="preprocessor">#include <array></span></div>
|
||||
@@ -138,11 +138,11 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
|
||||
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#ifdef _OPENMP </span><span class="comment">// check if OpenMP based parallellization is available</span></div>
|
||||
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#include <omp.h></span></div>
|
||||
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
|
||||
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span></div>
|
||||
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="keywordtype">double</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a>(<span class="keywordtype">double</span> a, <span class="keywordtype">double</span> b) {</div>
|
||||
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">return</span> ((b - a) * (std::rand() % 100) / 100.f) + a;</div>
|
||||
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span>}</div>
|
||||
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
|
||||
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span></div>
|
||||
<div class="foldopen" id="foldopen00058" data-start="{" data-end="}">
|
||||
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67"> 58</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *fname,</div>
|
||||
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">const</span> std::vector<std::valarray<double>> &X) {</div>
|
||||
@@ -175,9 +175,9 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
|
||||
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="keywordflow">return</span> 0;</div>
|
||||
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span>}</div>
|
||||
</div>
|
||||
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> </div>
|
||||
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span></div>
|
||||
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="keyword">namespace </span><a class="code hl_namespace" href="../../d8/d77/namespacemachine__learning.html">machine_learning</a> {</div>
|
||||
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> </div>
|
||||
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span></div>
|
||||
<div class="foldopen" id="foldopen00103" data-start="{" data-end="}">
|
||||
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"><a class="line" href="../../d8/d77/namespacemachine__learning.html#aa6aac06ccf128b0a9c55c9ee1a8e5631"> 103</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#ae868ad43698a1d69ba46ea3827d7d2c3">update_weights</a>(<span class="keyword">const</span> std::valarray<double> &x,</div>
|
||||
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> std::vector<std::valarray<double>> *W,</div>
|
||||
@@ -217,7 +217,7 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
|
||||
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> }</div>
|
||||
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span>}</div>
|
||||
</div>
|
||||
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> </div>
|
||||
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span></div>
|
||||
<div class="foldopen" id="foldopen00149" data-start="{" data-end="}">
|
||||
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"><a class="line" href="../../d8/d77/namespacemachine__learning.html#a042f435bca0839e721fc1574a61e8da3"> 149</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a>(<span class="keyword">const</span> std::vector<std::valarray<double>> &X,</div>
|
||||
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> std::vector<std::valarray<double>> *W,</div>
|
||||
@@ -250,9 +250,10 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
|
||||
</div>
|
||||
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> </div>
|
||||
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span>} <span class="comment">// namespace machine_learning</span></div>
|
||||
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> </div>
|
||||
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span></div>
|
||||
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> </div>
|
||||
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span><span class="keyword">using </span><a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#a042f435bca0839e721fc1574a61e8da3">machine_learning::kohonen_som_tracer</a>;</div>
|
||||
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> </div>
|
||||
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span></div>
|
||||
<div class="foldopen" id="foldopen00196" data-start="{" data-end="}">
|
||||
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"><a class="line" href="../../d9/d49/kohonen__som__trace_8cpp.html#ae571600aa42a81bc14a4a602ea5ff00d"> 196</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#ae571600aa42a81bc14a4a602ea5ff00d">test_circle</a>(std::vector<std::valarray<double>> *<a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>) {</div>
|
||||
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="keyword">const</span> <span class="keywordtype">int</span> N = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>->size();</div>
|
||||
@@ -272,7 +273,7 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
|
||||
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> }</div>
|
||||
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span>}</div>
|
||||
</div>
|
||||
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> </div>
|
||||
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span></div>
|
||||
<div class="foldopen" id="foldopen00233" data-start="{" data-end="}">
|
||||
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"><a class="line" href="../../d9/d49/kohonen__som__trace_8cpp.html#a1440a7779ac56f47a3f355ce4a8c7da0"> 233</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a1440a7779ac56f47a3f355ce4a8c7da0">test1</a>() {</div>
|
||||
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordtype">int</span> j = 0, N = 500;</div>
|
||||
@@ -301,11 +302,11 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
|
||||
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#ae571600aa42a81bc14a4a602ea5ff00d">test_circle</a>(&X); <span class="comment">// create test data around circumference of a circle</span></div>
|
||||
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">"test1.csv"</span>, X); <span class="comment">// save test data points</span></div>
|
||||
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">"w11.csv"</span>, W); <span class="comment">// save initial random weights</span></div>
|
||||
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> kohonen_som_tracer(X, &W, 0.1); <span class="comment">// train the SOM</span></div>
|
||||
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a>(X, &W, 0.1); <span class="comment">// train the SOM</span></div>
|
||||
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">"w12.csv"</span>, W); <span class="comment">// save the resultant weights</span></div>
|
||||
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span>}</div>
|
||||
</div>
|
||||
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> </div>
|
||||
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span></div>
|
||||
<div class="foldopen" id="foldopen00277" data-start="{" data-end="}">
|
||||
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"><a class="line" href="../../d9/d49/kohonen__som__trace_8cpp.html#a53082f2e5bacec40266499da4547309a"> 277</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a53082f2e5bacec40266499da4547309a">test_lamniscate</a>(std::vector<std::valarray<double>> *<a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>) {</div>
|
||||
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> <span class="keyword">const</span> <span class="keywordtype">int</span> N = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>->size();</div>
|
||||
@@ -324,7 +325,7 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
|
||||
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> }</div>
|
||||
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span>}</div>
|
||||
</div>
|
||||
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> </div>
|
||||
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span></div>
|
||||
<div class="foldopen" id="foldopen00315" data-start="{" data-end="}">
|
||||
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"><a class="line" href="../../d9/d49/kohonen__som__trace_8cpp.html#a0283886819c7c140a023582b7269e2d0"> 315</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a0283886819c7c140a023582b7269e2d0">test2</a>() {</div>
|
||||
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> <span class="keywordtype">int</span> j = 0, N = 500;</div>
|
||||
@@ -353,11 +354,11 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
|
||||
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a53082f2e5bacec40266499da4547309a">test_lamniscate</a>(&X); <span class="comment">// create test data around the lamniscate</span></div>
|
||||
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">"test2.csv"</span>, X); <span class="comment">// save test data points</span></div>
|
||||
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">"w21.csv"</span>, W); <span class="comment">// save initial random weights</span></div>
|
||||
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> kohonen_som_tracer(X, &W, 0.01); <span class="comment">// train the SOM</span></div>
|
||||
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a>(X, &W, 0.01); <span class="comment">// train the SOM</span></div>
|
||||
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">"w22.csv"</span>, W); <span class="comment">// save the resultant weights</span></div>
|
||||
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span>}</div>
|
||||
</div>
|
||||
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> </div>
|
||||
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span></div>
|
||||
<div class="foldopen" id="foldopen00359" data-start="{" data-end="}">
|
||||
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"><a class="line" href="../../d9/d49/kohonen__som__trace_8cpp.html#a7154fe319e6033485a8a6cd6f0d8932d"> 359</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a7154fe319e6033485a8a6cd6f0d8932d">test_3d_classes</a>(std::vector<std::valarray<double>> *<a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>) {</div>
|
||||
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> <span class="keyword">const</span> <span class="keywordtype">int</span> N = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>->size();</div>
|
||||
@@ -395,7 +396,7 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
|
||||
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> }</div>
|
||||
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span>}</div>
|
||||
</div>
|
||||
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> </div>
|
||||
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span></div>
|
||||
<div class="foldopen" id="foldopen00414" data-start="{" data-end="}">
|
||||
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"><a class="line" href="../../d9/d49/kohonen__som__trace_8cpp.html#a6d0455dd5c30adda100e95f0423c786e"> 414</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a6d0455dd5c30adda100e95f0423c786e">test3</a>() {</div>
|
||||
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> <span class="keywordtype">int</span> j = 0, N = 200;</div>
|
||||
@@ -424,17 +425,17 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
|
||||
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a7154fe319e6033485a8a6cd6f0d8932d">test_3d_classes</a>(&X); <span class="comment">// create test data around the lamniscate</span></div>
|
||||
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">"test3.csv"</span>, X); <span class="comment">// save test data points</span></div>
|
||||
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">"w31.csv"</span>, W); <span class="comment">// save initial random weights</span></div>
|
||||
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> kohonen_som_tracer(X, &W, 0.01); <span class="comment">// train the SOM</span></div>
|
||||
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a>(X, &W, 0.01); <span class="comment">// train the SOM</span></div>
|
||||
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gae0208548f8b393528e5db01717e88e67">save_nd_data</a>(<span class="stringliteral">"w32.csv"</span>, W); <span class="comment">// save the resultant weights</span></div>
|
||||
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span>}</div>
|
||||
</div>
|
||||
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> </div>
|
||||
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span></div>
|
||||
<div class="foldopen" id="foldopen00452" data-start="{" data-end="}">
|
||||
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"><a class="line" href="../../d9/d49/kohonen__som__trace_8cpp.html#a2256c10b16edba377b64a44b6c656908"> 452</a></span><span class="keywordtype">double</span> <a class="code hl_function" href="../../d9/d49/kohonen__som__trace_8cpp.html#a2256c10b16edba377b64a44b6c656908">get_clock_diff</a>(clock_t start_t, clock_t end_t) {</div>
|
||||
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(end_t - start_t) / CLOCKS_PER_SEC;</div>
|
||||
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span>}</div>
|
||||
</div>
|
||||
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> </div>
|
||||
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span></div>
|
||||
<div class="foldopen" id="foldopen00457" data-start="{" data-end="}">
|
||||
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"><a class="line" href="../../d9/d49/kohonen__som__trace_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627"> 457</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="../../dd/d1e/generate__parentheses_8cpp.html#gae66f6b31b5ad750f1fe042a706a4e3d4">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv) {</div>
|
||||
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span><span class="preprocessor">#ifdef _OPENMP</span></div>
|
||||
@@ -474,6 +475,7 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
|
||||
<div class="ttc" id="agroup__machine__learning_html_gaf5ce14f026d6d231bef29161bac2b485"><div class="ttname"><a href="../../d9/d66/group__machine__learning.html#gaf5ce14f026d6d231bef29161bac2b485">_random</a></div><div class="ttdeci">double _random(double a, double b)</div><div class="ttdef"><b>Definition</b> <a href="../../d4/def/kohonen__som__topology_8cpp_source.html#l00053">kohonen_som_topology.cpp:53</a></div></div>
|
||||
<div class="ttc" id="ahash__search_8cpp_html_a6e1a77282bc65ad359d753d25df23243"><div class="ttname"><a href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a></div><div class="ttdeci">int data[MAX]</div><div class="ttdoc">test data</div><div class="ttdef"><b>Definition</b> <a href="../../d1/df3/hash__search_8cpp_source.html#l00024">hash_search.cpp:24</a></div></div>
|
||||
<div class="ttc" id="akohonen__som__trace_8cpp_html_a0283886819c7c140a023582b7269e2d0"><div class="ttname"><a href="../../d9/d49/kohonen__som__trace_8cpp.html#a0283886819c7c140a023582b7269e2d0">test2</a></div><div class="ttdeci">void test2()</div><div class="ttdef"><b>Definition</b> <a href="#l00315">kohonen_som_trace.cpp:315</a></div></div>
|
||||
<div class="ttc" id="akohonen__som__trace_8cpp_html_a042f435bca0839e721fc1574a61e8da3"><div class="ttname"><a href="../../d9/d49/kohonen__som__trace_8cpp.html#a042f435bca0839e721fc1574a61e8da3">kohonen_som_tracer</a></div><div class="ttdeci">void kohonen_som_tracer(const std::vector< std::valarray< double > > &X, std::vector< std::valarray< double > > *W, double alpha_min)</div><div class="ttdef"><b>Definition</b> <a href="#l00149">kohonen_som_trace.cpp:149</a></div></div>
|
||||
<div class="ttc" id="akohonen__som__trace_8cpp_html_a1440a7779ac56f47a3f355ce4a8c7da0"><div class="ttname"><a href="../../d9/d49/kohonen__som__trace_8cpp.html#a1440a7779ac56f47a3f355ce4a8c7da0">test1</a></div><div class="ttdeci">void test1()</div><div class="ttdef"><b>Definition</b> <a href="#l00233">kohonen_som_trace.cpp:233</a></div></div>
|
||||
<div class="ttc" id="akohonen__som__trace_8cpp_html_a2256c10b16edba377b64a44b6c656908"><div class="ttname"><a href="../../d9/d49/kohonen__som__trace_8cpp.html#a2256c10b16edba377b64a44b6c656908">get_clock_diff</a></div><div class="ttdeci">double get_clock_diff(clock_t start_t, clock_t end_t)</div><div class="ttdef"><b>Definition</b> <a href="#l00452">kohonen_som_trace.cpp:452</a></div></div>
|
||||
<div class="ttc" id="akohonen__som__trace_8cpp_html_a53082f2e5bacec40266499da4547309a"><div class="ttname"><a href="../../d9/d49/kohonen__som__trace_8cpp.html#a53082f2e5bacec40266499da4547309a">test_lamniscate</a></div><div class="ttdeci">void test_lamniscate(std::vector< std::valarray< double > > *data)</div><div class="ttdef"><b>Definition</b> <a href="#l00277">kohonen_som_trace.cpp:277</a></div></div>
|
||||
@@ -490,7 +492,7 @@ $(function(){initNavTree('d9/d49/kohonen__som__trace_8cpp_source.html','../../')
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="../../dir_3343723ae086de42ee4ca9774da3a13f.html">machine_learning</a></li><li class="navelem"><a class="el" href="../../d9/d49/kohonen__som__trace_8cpp.html">kohonen_som_trace.cpp</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.12.0"/>
|
||||
<meta name="generator" content="Doxygen 1.13.2"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>TheAlgorithms/C++: data_structures::Node Struct Reference</title>
|
||||
<link rel="icon" href="../../favicon.svg" type="image/x-icon" />
|
||||
@@ -60,7 +60,7 @@ window.MathJax = {
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.12.0 -->
|
||||
<!-- Generated by Doxygen 1.13.2 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
@@ -183,7 +183,7 @@ Public Attributes</h2></td></tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
||||
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
@@ -272,7 +272,7 @@ Public Attributes</h2></td></tr>
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="../../d5/d3c/namespacedata__structures.html">data_structures</a></li><li class="navelem"><a class="el" href="../../d9/d49/structdata__structures_1_1_node.html">Node</a></li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
|
||||
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user