Documentation for c26eea874d

This commit is contained in:
realstealthninja
2025-05-19 11:38:33 +00:00
parent c7a9a42397
commit 14583a2f33
2829 changed files with 30266 additions and 21669 deletions

View File

@@ -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_topology.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&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
@@ -124,7 +124,7 @@ $(function(){initNavTree('d4/def/kohonen__som__topology_8cpp_source.html','../..
<div class="headertitle"><div class="title">kohonen_som_topology.cpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d4/def/kohonen__som__topology_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="../../d4/def/kohonen__som__topology_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="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="preprocessor">#define _USE_MATH_DEFINES </span><span class="comment">//&lt; required for MS Visual C++</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="preprocessor">#include &lt;algorithm&gt;</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="preprocessor">#include &lt;array&gt;</span></div>
@@ -140,13 +140,13 @@ $(function(){initNavTree('d4/def/kohonen__som__topology_8cpp_source.html','../..
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="preprocessor">#ifdef _OPENMP </span><span class="comment">// check if OpenMP based parallellization is available</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="preprocessor">#include &lt;omp.h&gt;</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span></div>
<div class="foldopen" id="foldopen00053" data-start="{" data-end="}">
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="../../d9/d66/group__machine__learning.html#gaf5ce14f026d6d231bef29161bac2b485"> 53</a></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="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keywordflow">return</span> ((b - a) * (std::rand() % 100) / 100.f) + a;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span>}</div>
</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span></div>
<div class="foldopen" id="foldopen00065" data-start="{" data-end="}">
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="../../d9/d66/group__machine__learning.html#gabc90175770bf0d5853c466e14993a08c"> 65</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gabc90175770bf0d5853c466e14993a08c">save_2d_data</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *fname,</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">const</span> std::vector&lt;std::valarray&lt;double&gt;&gt; &amp;X) {</div>
@@ -180,7 +180,7 @@ $(function(){initNavTree('d4/def/kohonen__som__topology_8cpp_source.html','../..
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span>}</div>
</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span></div>
<div class="foldopen" id="foldopen00105" data-start="{" data-end="}">
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"><a class="line" href="../../d9/d66/group__machine__learning.html#ga60f9186ccb682724a8792a2bf81e9b9e"> 105</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#ga60f9186ccb682724a8792a2bf81e9b9e">get_min_2d</a>(<span class="keyword">const</span> std::vector&lt;std::valarray&lt;double&gt;&gt; &amp;X, <span class="keywordtype">double</span> *val,</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="keywordtype">int</span> *x_idx, <span class="keywordtype">int</span> *y_idx) {</div>
@@ -201,10 +201,10 @@ $(function(){initNavTree('d4/def/kohonen__som__topology_8cpp_source.html','../..
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> }</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span>}</div>
</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</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="l00129" name="l00129"></a><span class="lineno"><a class="line" href="../../d8/d77/namespacemachine__learning.html#a7220dbb7fa896d83bfb7a50e4fce1786"> 129</a></span><span class="keyword">constexpr</span> <span class="keywordtype">double</span> <a class="code hl_variable" href="../../d8/d77/namespacemachine__learning.html#a7220dbb7fa896d83bfb7a50e4fce1786">MIN_DISTANCE</a> = 1e-4;</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> </div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span></div>
<div class="foldopen" id="foldopen00142" data-start="{" data-end="}">
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"><a class="line" href="../../d8/d77/namespacemachine__learning.html#aa72a53c88203fde278f1fe6c3afe5b07"> 142</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#aa72a53c88203fde278f1fe6c3afe5b07">save_u_matrix</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *fname,</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="keyword">const</span> std::vector&lt;std::vector&lt;std::valarray&lt;double&gt;&gt;&gt; &amp;W) {</div>
@@ -254,7 +254,7 @@ $(function(){initNavTree('d4/def/kohonen__som__topology_8cpp_source.html','../..
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span>}</div>
</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> </div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span></div>
<div class="foldopen" id="foldopen00200" data-start="{" data-end="}">
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"><a class="line" href="../../d8/d77/namespacemachine__learning.html#ae868ad43698a1d69ba46ea3827d7d2c3"> 200</a></span><span class="keywordtype">double</span> <a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#ae868ad43698a1d69ba46ea3827d7d2c3">update_weights</a>(<span class="keyword">const</span> std::valarray&lt;double&gt; &amp;X,</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> std::vector&lt;std::vector&lt;std::valarray&lt;double&gt;&gt;&gt; *W,</div>
@@ -317,7 +317,7 @@ $(function(){initNavTree('d4/def/kohonen__som__topology_8cpp_source.html','../..
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> <span class="keywordflow">return</span> d_min;</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span>}</div>
</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> </div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span></div>
<div class="foldopen" id="foldopen00269" data-start="{" data-end="}">
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"><a class="line" href="../../d8/d77/namespacemachine__learning.html#ac43d294e21a0c4fa33c53757df054576"> 269</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#ac43d294e21a0c4fa33c53757df054576">kohonen_som</a>(<span class="keyword">const</span> std::vector&lt;std::valarray&lt;double&gt;&gt; &amp;X,</div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> std::vector&lt;std::vector&lt;std::valarray&lt;double&gt;&gt;&gt; *W,</div>
@@ -369,7 +369,8 @@ $(function(){initNavTree('d4/def/kohonen__som__topology_8cpp_source.html','../..
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> </div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span><span class="keyword">using </span><a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#ac43d294e21a0c4fa33c53757df054576">machine_learning::kohonen_som</a>;</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span><span class="keyword">using </span><a class="code hl_function" href="../../d8/d77/namespacemachine__learning.html#aa72a53c88203fde278f1fe6c3afe5b07">machine_learning::save_u_matrix</a>;</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> </div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span></div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span></div>
<div class="foldopen" id="foldopen00330" data-start="{" data-end="}">
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"><a class="line" href="../../d4/def/kohonen__som__topology_8cpp.html#a48efb079040c7aaa3a4917a0e486cba9"> 330</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d4/def/kohonen__som__topology_8cpp.html#a48efb079040c7aaa3a4917a0e486cba9">test_2d_classes</a>(std::vector&lt;std::valarray&lt;double&gt;&gt; *<a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>) {</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</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>-&gt;size();</div>
@@ -402,7 +403,7 @@ $(function(){initNavTree('d4/def/kohonen__som__topology_8cpp_source.html','../..
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> }</div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span>}</div>
</div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> </div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span></div>
<div class="foldopen" id="foldopen00369" data-start="{" data-end="}">
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"><a class="line" href="../../d4/def/kohonen__som__topology_8cpp.html#a1440a7779ac56f47a3f355ce4a8c7da0"> 369</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d4/def/kohonen__som__topology_8cpp.html#a1440a7779ac56f47a3f355ce4a8c7da0">test1</a>() {</div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> <span class="keywordtype">int</span> j = 0, N = 300;</div>
@@ -432,12 +433,12 @@ $(function(){initNavTree('d4/def/kohonen__som__topology_8cpp_source.html','../..
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> </div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> <a class="code hl_function" href="../../d4/def/kohonen__som__topology_8cpp.html#a48efb079040c7aaa3a4917a0e486cba9">test_2d_classes</a>(&amp;X); <span class="comment">// create test data around circumference of a circle</span></div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gabc90175770bf0d5853c466e14993a08c">save_2d_data</a>(<span class="stringliteral">&quot;test1.csv&quot;</span>, X); <span class="comment">// save test data points</span></div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> save_u_matrix(<span class="stringliteral">&quot;w11.csv&quot;</span>, W); <span class="comment">// save initial random weights</span></div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> kohonen_som(X, &amp;W, 1e-4); <span class="comment">// train the SOM</span></div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> save_u_matrix(<span class="stringliteral">&quot;w12.csv&quot;</span>, W); <span class="comment">// save the resultant weights</span></div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> <a class="code hl_function" href="../../d4/def/kohonen__som__topology_8cpp.html#aa72a53c88203fde278f1fe6c3afe5b07">save_u_matrix</a>(<span class="stringliteral">&quot;w11.csv&quot;</span>, W); <span class="comment">// save initial random weights</span></div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> <a class="code hl_function" href="../../d4/def/kohonen__som__topology_8cpp.html#ac43d294e21a0c4fa33c53757df054576">kohonen_som</a>(X, &amp;W, 1e-4); <span class="comment">// train the SOM</span></div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> <a class="code hl_function" href="../../d4/def/kohonen__som__topology_8cpp.html#aa72a53c88203fde278f1fe6c3afe5b07">save_u_matrix</a>(<span class="stringliteral">&quot;w12.csv&quot;</span>, W); <span class="comment">// save the resultant weights</span></div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span>}</div>
</div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> </div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span></div>
<div class="foldopen" id="foldopen00411" data-start="{" data-end="}">
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"><a class="line" href="../../d4/def/kohonen__som__topology_8cpp.html#a1302662a56ebf67a21249270b017297e"> 411</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d4/def/kohonen__som__topology_8cpp.html#a1302662a56ebf67a21249270b017297e">test_3d_classes1</a>(std::vector&lt;std::valarray&lt;double&gt;&gt; *<a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>) {</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> N = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>-&gt;size();</div>
@@ -471,7 +472,7 @@ $(function(){initNavTree('d4/def/kohonen__som__topology_8cpp_source.html','../..
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> }</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span>}</div>
</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> </div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span></div>
<div class="foldopen" id="foldopen00451" data-start="{" data-end="}">
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"><a class="line" href="../../d4/def/kohonen__som__topology_8cpp.html#a0283886819c7c140a023582b7269e2d0"> 451</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d4/def/kohonen__som__topology_8cpp.html#a0283886819c7c140a023582b7269e2d0">test2</a>() {</div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> <span class="keywordtype">int</span> j = 0, N = 300;</div>
@@ -501,12 +502,12 @@ $(function(){initNavTree('d4/def/kohonen__som__topology_8cpp_source.html','../..
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> </div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> <a class="code hl_function" href="../../d4/def/kohonen__som__topology_8cpp.html#a1302662a56ebf67a21249270b017297e">test_3d_classes1</a>(&amp;X); <span class="comment">// create test data around circumference of a circle</span></div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gabc90175770bf0d5853c466e14993a08c">save_2d_data</a>(<span class="stringliteral">&quot;test2.csv&quot;</span>, X); <span class="comment">// save test data points</span></div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> save_u_matrix(<span class="stringliteral">&quot;w21.csv&quot;</span>, W); <span class="comment">// save initial random weights</span></div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> kohonen_som(X, &amp;W, 1e-4); <span class="comment">// train the SOM</span></div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> save_u_matrix(<span class="stringliteral">&quot;w22.csv&quot;</span>, W); <span class="comment">// save the resultant weights</span></div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> <a class="code hl_function" href="../../d4/def/kohonen__som__topology_8cpp.html#aa72a53c88203fde278f1fe6c3afe5b07">save_u_matrix</a>(<span class="stringliteral">&quot;w21.csv&quot;</span>, W); <span class="comment">// save initial random weights</span></div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> <a class="code hl_function" href="../../d4/def/kohonen__som__topology_8cpp.html#ac43d294e21a0c4fa33c53757df054576">kohonen_som</a>(X, &amp;W, 1e-4); <span class="comment">// train the SOM</span></div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> <a class="code hl_function" href="../../d4/def/kohonen__som__topology_8cpp.html#aa72a53c88203fde278f1fe6c3afe5b07">save_u_matrix</a>(<span class="stringliteral">&quot;w22.csv&quot;</span>, W); <span class="comment">// save the resultant weights</span></div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span>}</div>
</div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> </div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span></div>
<div class="foldopen" id="foldopen00493" data-start="{" data-end="}">
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"><a class="line" href="../../d4/def/kohonen__som__topology_8cpp.html#a4b7ab643f6a5002f991837de46f70653"> 493</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d4/def/kohonen__som__topology_8cpp.html#a4b7ab643f6a5002f991837de46f70653">test_3d_classes2</a>(std::vector&lt;std::valarray&lt;double&gt;&gt; *<a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>) {</div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> N = <a class="code hl_variable" href="../../d1/df3/hash__search_8cpp.html#a6e1a77282bc65ad359d753d25df23243">data</a>-&gt;size();</div>
@@ -544,7 +545,7 @@ $(function(){initNavTree('d4/def/kohonen__som__topology_8cpp_source.html','../..
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> }</div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"> 527</span>}</div>
</div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span> </div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span></div>
<div class="foldopen" id="foldopen00537" data-start="{" data-end="}">
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"><a class="line" href="../../d4/def/kohonen__som__topology_8cpp.html#a6d0455dd5c30adda100e95f0423c786e"> 537</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d4/def/kohonen__som__topology_8cpp.html#a6d0455dd5c30adda100e95f0423c786e">test3</a>() {</div>
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span> <span class="keywordtype">int</span> j = 0, N = 500;</div>
@@ -574,18 +575,18 @@ $(function(){initNavTree('d4/def/kohonen__som__topology_8cpp_source.html','../..
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno"> 562</span> </div>
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"> 563</span> <a class="code hl_function" href="../../d4/def/kohonen__som__topology_8cpp.html#a4b7ab643f6a5002f991837de46f70653">test_3d_classes2</a>(&amp;X); <span class="comment">// create test data around circumference of a circle</span></div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"> 564</span> <a class="code hl_function" href="../../d9/d66/group__machine__learning.html#gabc90175770bf0d5853c466e14993a08c">save_2d_data</a>(<span class="stringliteral">&quot;test3.csv&quot;</span>, X); <span class="comment">// save test data points</span></div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"> 565</span> save_u_matrix(<span class="stringliteral">&quot;w31.csv&quot;</span>, W); <span class="comment">// save initial random weights</span></div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span> kohonen_som(X, &amp;W, 1e-4); <span class="comment">// train the SOM</span></div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"> 567</span> save_u_matrix(<span class="stringliteral">&quot;w32.csv&quot;</span>, W); <span class="comment">// save the resultant weights</span></div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"> 565</span> <a class="code hl_function" href="../../d4/def/kohonen__som__topology_8cpp.html#aa72a53c88203fde278f1fe6c3afe5b07">save_u_matrix</a>(<span class="stringliteral">&quot;w31.csv&quot;</span>, W); <span class="comment">// save initial random weights</span></div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span> <a class="code hl_function" href="../../d4/def/kohonen__som__topology_8cpp.html#ac43d294e21a0c4fa33c53757df054576">kohonen_som</a>(X, &amp;W, 1e-4); <span class="comment">// train the SOM</span></div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"> 567</span> <a class="code hl_function" href="../../d4/def/kohonen__som__topology_8cpp.html#aa72a53c88203fde278f1fe6c3afe5b07">save_u_matrix</a>(<span class="stringliteral">&quot;w32.csv&quot;</span>, W); <span class="comment">// save the resultant weights</span></div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"> 568</span>}</div>
</div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"> 569</span> </div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"> 569</span></div>
<div class="foldopen" id="foldopen00577" data-start="{" data-end="}">
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"><a class="line" href="../../d4/def/kohonen__som__topology_8cpp.html#a2256c10b16edba377b64a44b6c656908"> 577</a></span><span class="keywordtype">double</span> <a class="code hl_function" href="../../d4/def/kohonen__som__topology_8cpp.html#a2256c10b16edba377b64a44b6c656908">get_clock_diff</a>(clock_t start_t, clock_t end_t) {</div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span> <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(end_t - start_t) / CLOCKS_PER_SEC;</div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span>}</div>
</div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span> </div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span></div>
<div class="foldopen" id="foldopen00582" data-start="{" data-end="}">
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"><a class="line" href="../../d4/def/kohonen__som__topology_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627"> 582</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="l00583" name="l00583"></a><span class="lineno"> 583</span><span class="preprocessor">#ifdef _OPENMP</span></div>
@@ -632,6 +633,8 @@ $(function(){initNavTree('d4/def/kohonen__som__topology_8cpp_source.html','../..
<div class="ttc" id="akohonen__som__topology_8cpp_html_a48efb079040c7aaa3a4917a0e486cba9"><div class="ttname"><a href="../../d4/def/kohonen__som__topology_8cpp.html#a48efb079040c7aaa3a4917a0e486cba9">test_2d_classes</a></div><div class="ttdeci">void test_2d_classes(std::vector&lt; std::valarray&lt; double &gt; &gt; *data)</div><div class="ttdef"><b>Definition</b> <a href="#l00330">kohonen_som_topology.cpp:330</a></div></div>
<div class="ttc" id="akohonen__som__topology_8cpp_html_a4b7ab643f6a5002f991837de46f70653"><div class="ttname"><a href="../../d4/def/kohonen__som__topology_8cpp.html#a4b7ab643f6a5002f991837de46f70653">test_3d_classes2</a></div><div class="ttdeci">void test_3d_classes2(std::vector&lt; std::valarray&lt; double &gt; &gt; *data)</div><div class="ttdef"><b>Definition</b> <a href="#l00493">kohonen_som_topology.cpp:493</a></div></div>
<div class="ttc" id="akohonen__som__topology_8cpp_html_a6d0455dd5c30adda100e95f0423c786e"><div class="ttname"><a href="../../d4/def/kohonen__som__topology_8cpp.html#a6d0455dd5c30adda100e95f0423c786e">test3</a></div><div class="ttdeci">void test3()</div><div class="ttdef"><b>Definition</b> <a href="#l00537">kohonen_som_topology.cpp:537</a></div></div>
<div class="ttc" id="akohonen__som__topology_8cpp_html_aa72a53c88203fde278f1fe6c3afe5b07"><div class="ttname"><a href="../../d4/def/kohonen__som__topology_8cpp.html#aa72a53c88203fde278f1fe6c3afe5b07">save_u_matrix</a></div><div class="ttdeci">int save_u_matrix(const char *fname, const std::vector&lt; std::vector&lt; std::valarray&lt; double &gt; &gt; &gt; &amp;W)</div><div class="ttdef"><b>Definition</b> <a href="#l00142">kohonen_som_topology.cpp:142</a></div></div>
<div class="ttc" id="akohonen__som__topology_8cpp_html_ac43d294e21a0c4fa33c53757df054576"><div class="ttname"><a href="../../d4/def/kohonen__som__topology_8cpp.html#ac43d294e21a0c4fa33c53757df054576">kohonen_som</a></div><div class="ttdeci">void kohonen_som(const std::vector&lt; std::valarray&lt; double &gt; &gt; &amp;X, std::vector&lt; std::vector&lt; std::valarray&lt; double &gt; &gt; &gt; *W, double alpha_min)</div><div class="ttdef"><b>Definition</b> <a href="#l00269">kohonen_som_topology.cpp:269</a></div></div>
<div class="ttc" id="anamespacemachine__learning_html"><div class="ttname"><a href="../../d8/d77/namespacemachine__learning.html">machine_learning</a></div><div class="ttdoc">A* search algorithm</div></div>
<div class="ttc" id="anamespacemachine__learning_html_a6f1c98c016ad34ff3d9f39372161bd35"><div class="ttname"><a href="../../d8/d77/namespacemachine__learning.html#a6f1c98c016ad34ff3d9f39372161bd35">machine_learning::sum</a></div><div class="ttdeci">T sum(const std::vector&lt; std::valarray&lt; T &gt; &gt; &amp;A)</div><div class="ttdef"><b>Definition</b> <a href="../../d8/d95/vector__ops_8hpp_source.html#l00232">vector_ops.hpp:232</a></div></div>
<div class="ttc" id="anamespacemachine__learning_html_a7220dbb7fa896d83bfb7a50e4fce1786"><div class="ttname"><a href="../../d8/d77/namespacemachine__learning.html#a7220dbb7fa896d83bfb7a50e4fce1786">machine_learning::MIN_DISTANCE</a></div><div class="ttdeci">constexpr double MIN_DISTANCE</div><div class="ttdef"><b>Definition</b> <a href="#l00129">kohonen_som_topology.cpp:129</a></div></div>
@@ -644,7 +647,7 @@ $(function(){initNavTree('d4/def/kohonen__som__topology_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="../../d4/def/kohonen__som__topology_8cpp.html">kohonen_som_topology.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>