Content-Type: text/enriched Text-Width: 70 global { iter 0 areas 3 mult 1 <x-color><param>blue</param>d "/tmp/coco"</x-color> } all { <x-color><param>DimGrey</param>/**default area size**/</x-color> d_a 15 d_b 1 } area 0 { d_a 15 d_b 1 } area 1 { d_a 15 d_b 1 } <x-color><param>DimGrey</param>/**This creates Fig.6a) of: "</x-color><x-color><param>DimGrey</param>A Self-Organizing Map of Sigma-Pi Units", C. Weber and S. Wermter, S., Neurocomputing, 2006/7 (in press). R_0 and R_1 are the network inputs; e.g. R_0 is visually perceived object position, R_1 is the viewing direction of the eyes. Each are at two different times, time </x-color><x-color><param>red</param>0</x-color><x-color><param>DimGrey</param>, </x-color><x-color><param>red</param>1</x-color><x-color><param>DimGrey</param>. These are differernt "viewing angles" belonging to one body-centered position. S_2 is the map activation (after winner finding); only needed for one of the data instances ("viewing angle"), e.g. time </x-color><x-color><param>red</param>0</x-color><x-color><param>DimGrey</param>. w_2_0 are the sigma-pi weights: for each neuron (square), vertical is area 0 input, horizontal is area 1 input. </x-color><x-color><param>DimGrey</param>**/</x-color> <x-color><param>red</param>set rlen 2 </x-color> <x-color><param>DimGrey</param>/**2**/</x-color><x-color><param>red</param> </x-color><x-color><param>deep pink</param>set timescale 1</x-color> <x-color><param>DimGrey</param>/**inverse of (rlen-1) (if total_fit_gauss used 1ce**/</x-color><x-color><param>red</param> </x-color>set import <x-bg-color><param>cyan</param> 0</x-bg-color> <x-color><param>DimGrey</param>/**0 if initial learning**/</x-color> set <bold>trainiter</bold> <x-bg-color><param>cyan</param> 300000</x-bg-color> <x-color><param>DimGrey</param>/**50000**/</x-color> set export <x-bg-color><param>cyan</param> 1</x-bg-color> <x-color><param>DimGrey</param>/**occurs only in train; weights and thresholds**/</x-color> <italic>set itercut 325000</italic> <italic>set sigmas 8.0+3.5+0.00001</italic> <x-color><param>DimGrey</param>/**neighbourhood interaction widths**/</x-color> <italic>set stones 33000+200000</italic> <x-color><param>DimGrey</param>/**the times at which the 2nd and 3rd neighbourhood interaction width values are reached**/</x-color> series (1) { if ($import = 0) sw (<x-color><param>red</param>0</x-color>; <x-color><param>red</param>1</x-color>; alltime) { <x-color><param>DarkGreen</param>2(n) {N,w; weight_sigpi_alloc_full ;0,1; , ; -0.1+0.1} /*only extra-area multiplicative interactions*/</x-color> } if ($import) sw (<x-color><param>red</param>0</x-color>; <x-color><param>red</param>1</x-color>; alltime) { <x-color><param>DarkGreen</param>2(n) {N,w+</x-color><x-color><param>blue</param>d</x-color><x-color><param>DarkGreen</param>; weight_sigpi_alloc_import; 0,1; , ; }</x-color> } } <x-color><param>DimGrey</param>/**instead of winner-finding based on max response, use this to find winner based on min distance to data**</x-color> <x-color><param>deep sky blue</param>2(o) {P,</x-color><x-color><param>DarkGreen</param>w</x-color><x-color><param>deep sky blue</param>; weight_sigpi_euclid; 0, 1 ; R, R ; }</x-color> 2(t) {S ; total_neigh_winner; ; Q ; <x-color><param>deep sky blue</param>-</x-color>1, $<italic>sigmas</italic>, $<italic>stones</italic>, <x-color><param>deep pink</param>0.2</x-color>} <x-color><param>DimGrey</param>**/</x-color> /**TRAIN**/ series ($<bold>trainiter</bold>) { <x-color><param>DimGrey</param>/**presentation of the data; supplies two instances of data, one at time </x-color><x-color><param>red</param>0</x-color><x-color><param>DimGrey</param> and one at time </x-color><x-color><param>red</param>1</x-color><x-color><param>DimGrey</param>**/</x-color> sw (<x-color><param>red</param>0</x-color>; <x-color><param>red</param>$rlen</x-color>; alltime) { 0(n) {T ; data_gauss_3areas_2D; ; ; 1, 0, 0.5, 1.0, <x-bg-color><param>tomato</param> 2</x-bg-color>, 0.5} 1(n) {T ; data_gauss_3areas_2D; ; ; 0, 1, 0.5, 1.0} 2(n) {T ; data_gauss_3areas_2D; ; ; 0, 2, 0.5, 1.0} } <x-color><param>DimGrey</param>/*new area sigma height mode stretch*/</x-color> sw (<x-color><param>red</param>0</x-color>; <x-color><param>red</param>$rlen</x-color>; order) { 0(t) {R ; total_normalize ; ; T ; 1.0} 1(t) {R ; total_normalize ; ; T ; 1.0} } sw (<x-color><param>red</param>0</x-color>; <x-color><param>red</param>1</x-color>; order) { 2(o) {P,<x-color><param>DarkGreen</param>w</x-color>; weight_sigpi_feed ; 0, 1 ; R, R ; } <x-color><param>DimGrey</param>/**map activation needed only at time (data instance) </x-color><x-color><param>red</param>0</x-color><x-color><param>DimGrey</param>**/</x-color> 2(t) {R ; total_winner ; ; P ; 1 } <x-color><param>DimGrey</param>/**for observe**/</x-color> } <x-color><param>DimGrey</param> sw (</x-color><x-color><param>red</param>1</x-color><x-color><param>DimGrey</param>; </x-color><x-color><param>red</param>2</x-color><x-color><param>DimGrey</param>; order) { </x-color><x-color><param>DimGrey</param>/**only for observe: test how other data instance activates map**/</x-color><x-color><param>DimGrey</param> 2(o) {O,</x-color><x-color><param>DarkGreen</param>w</x-color><x-color><param>DimGrey</param>; weight_sigpi_feed ; 0, 1 ; R, R ; } </x-color><x-color><param>DimGrey</param>/**only for observe: if Q_2=R_2, then same winner for both views**/</x-color><x-color><param>DimGrey</param> 2(t) {Q ; total_winner ; ; O ; 1 } </x-color><x-color><param>DimGrey</param>/**only for observe: (i.e. well learnt)**/</x-color><x-color><param>DimGrey</param> }</x-color> sw (<x-color><param>red</param>1</x-color>; <x-color><param>red</param>$rlen</x-color>; order) { 2(o) {P ; single_copy ; ; ; <x-color><param>red</param>-1 </x-color>} <x-color><param>DimGrey</param>/**map activation for postsynaptic learning value S is from time </x-color><x-color><param>red</param>0</x-color><x-color><param>DimGrey</param>**/</x-color> 2(t) {S ; total_fit_gauss ; ; <bold>P</bold> ; $<italic>sigmas</italic>, $<italic>sigmas</italic>, $<italic>stones</italic>, <x-color><param>deep pink</param>$timescale</x-color>, 1, 15.1} <x-color><param>DimGrey</param>/**find soft winner**/</x-color> 2(t) {S ; total_normalize ; ; ; 1.0} <x-color><param>DarkGreen</param>2(o) {N,w; weight_sigpi_kohonen; 2, 0, 1; </x-color><bold>S</bold><x-color><param>DarkGreen</param>, R, R; 0.01} </x-color> <x-color><param>DimGrey</param>/**the presynaptic values (</x-color><x-color><param>DarkGreen</param>R</x-color><x-color><param>DimGrey</param>) are from time </x-color><x-color><param>red</param>1</x-color><x-color><param>DimGrey</param>**/</x-color> } if (iter > $<italic>itercut</italic>) sw (<x-color><param>red</param>0</x-color>; <x-color><param>red</param>1</x-color>; order) { if (iter % 1000) <x-color><param>DarkGreen</param>2(o) {N,w ; weight_sigpi_cutsmall; 0,1; , ; 0, 1+0.1}</x-color> } <x-color><param>DimGrey</param>/**write to files**/</x-color> if (iter % 1000) sw (<x-color><param>red</param>0</x-color>; <x-color><param>red</param>$rlen</x-color>; alltime) { 0(n) {T,<x-color><param>blue</param>d</x-color>; observe_phase; ; ; } <x-color><param>DimGrey</param>/**data**/</x-color> 0(n) {R,<x-color><param>blue</param>d</x-color>; observe_phase; ; ; } <x-color><param>DimGrey</param>/**data**/</x-color> 1(n) {T,<x-color><param>blue</param>d</x-color>; observe_phase; ; ; } <x-color><param>DimGrey</param>/**data**/</x-color> 1(n) {R,<x-color><param>blue</param>d</x-color>; observe_phase; ; ; } <x-color><param>DimGrey</param>/**data**/</x-color> 2(n) {T,<x-color><param>blue</param>d</x-color>; observe_phase; ; ; } <x-color><param>DimGrey</param>/**data, not used (could be used for supervised learning)**/</x-color> 2(n) {S,<x-color><param>blue</param>d</x-color>; observe_phase; ; ; } <x-color><param>DimGrey</param>/**"majority vote" (Gaussian) used for learning**/</x-color> 2(n) {P,<x-color><param>blue</param>d</x-color>; observe_phase; ; ; } <x-color><param>DimGrey</param>/**map input before taking soft-winner**/</x-color> 2(n) {Q,<x-color><param>blue</param>d</x-color>; observe_phase; ; ; } <x-color><param>DimGrey</param>/**the map activation (hard winner) from view at time </x-color><x-color><param>red</param>1</x-color><x-color><param>DimGrey</param>**/</x-color> 2(n) {R,<x-color><param>blue</param>d</x-color>; observe_phase; ; ; } <x-color><param>DimGrey</param>/** " " " </x-color><x-color><param>red</param>0</x-color><x-color><param>DimGrey</param>**/</x-color> } if (iter % 1000) sw (<x-color><param>red</param>0</x-color>; <x-color><param>red</param>1</x-color>; alltime) { 2(n) {N,<x-color><param>DarkGreen</param>w </x-color>; weight_sigpi_histogram; 0, 1; , ; 10} if ($export) 2(n) {N,<x-color><param>DarkGreen</param>w</x-color>+<x-color><param>blue</param>d</x-color>; weight_sigpi_export; 0, 1; , ; 6 } } }