antti@antti-HP-630-Notebook-PC ~/pctronm $ srrepl Loading.... Completed in 2.98 seconds. Shen, copyright (C) 2010-2015 Mark Tarver www.shenlanguage.org, Shen 18.1 running under Ruby, implementation: ruby 2.3.1 port 0.15.1 ported by Greg Spurrier (0-) (tc +) true (1+) (load "maths-lib1.shen") sign : (number --> number) abs : (number --> number) floor : (number --> number) maths.floor-pos : (number --> number) maths.floor-neg : (number --> number) maths.floor-h : (number --> (number --> (number --> number))) ceiling : (number --> number) trunc : (number --> number) maths-round0 : (number --> number) maths.round-down? : (number --> boolean) int-part : (number --> number) frac-part : (number --> number) modf : (number --> (number * number)) maths-round' : (number --> (number --> number)) maths.pow-2 : (number --> (number --> number)) fmod : (number --> (number --> number)) frexp : (number --> (number * number)) maths.frexp-neg : (number --> (number * number)) maths.frexp-pos : (number --> (number * number)) maths.mult-2 : (number --> (number --> (number * number))) maths.div-2 : (number --> (number --> (number * number))) ldexp : (number --> (number --> number)) square : (number --> number) maths.power-pos : (number --> (number --> number)) power : (number --> (number --> number)) maths.type#global : symbol 1.0e-15 : number 2.7182818284590455 : number 2.302585092994046 : number 0.6931471805599454 : number 3.141592653589793 : number 1.5707963267948966 : number 0.7853981633974484 : number 6.283185307179586 : number 0.31830988618379075 : number 0.6366197723675814 : number 1.4426950408889634 : number 0.43429448190325187 : number 1.4142135623730951 : number 0.7071067811865476 : number 1.1283791670955126 : number 0.017453292519943295 : number 57.29577951308232 : number maths.small-enough? : (number --> boolean) rad->degs : (number --> number) degs->rad : (number --> number) dms->degs : ((list number) --> number) maths.dms->degs-pos : ((list number) --> number) degs->dms : (number --> (list number)) maths.range-ok? : (number --> boolean) exp : (number --> number) maths.exp-large : (number --> number) maths.exp-h : (number --> number) maths.exp-sum : (number --> (number --> (number --> (number --> number)))) sinh : (number --> number) cosh : (number --> number) tanh : (number --> number) expt : (number --> (number --> number)) sqrt : (number --> number) maths.sqrt-scale : (number --> (number --> number)) maths.sqrt-h : (number --> number) maths.sqrt-iter : (number --> (number --> (number --> number))) maths.mean : (number --> (number --> number)) log : (number --> number) maths.log-scale : (number --> (number --> number)) maths.log-h : (number --> number) maths.log-sum : (number --> (number --> (number --> (number --> number)))) log10 : (number --> number) log2 : (number --> number) log' : (number --> (number --> number)) sin : (number --> number) maths.sin-h : (number --> number) maths.sin-sum : (number --> (number --> (number --> (number --> (number --> number))))) cos : (number --> number) tan : (number --> number) asin : (number --> number) maths.asin-h : (number --> number) maths.asin-sum : (number --> (number --> (number --> (number --> number)))) acos : (number --> number) atan : (number --> number) maths.atan-h : (number --> number) maths.atan-sum : (number --> (number --> (number --> (number --> (number --> number))))) maths.atan-lt1 : (number --> number) maths.atan-gt1 : (number --> number) maths.atan-transf : (number --> number) atan2 : (number --> (number --> number)) even? : (number --> boolean) odd? : (number --> boolean) natural? : (number --> boolean) positive? : (number --> boolean) negative? : (number --> boolean) zero? : (number --> boolean) maths.rsh : (number --> number) maths.rsh-h : (number --> (number --> number)) maths./-pos : (number --> (number --> (number * number))) maths.div-w : (number --> (number --> (number --> (number --> (number * number))))) maths.pow-2div : (number --> (number --> (number --> number))) divisible-by? : (number --> (number --> boolean)) maths.mod-pos : (number --> (number --> number)) maths.div-ww : (number --> (number --> (number --> number))) /mod : (number --> (number --> (number * number))) maths./mod-h : (number --> (number --> (number --> (number --> (number --> (number * number)))))) div : (number --> (number --> number)) maths.div-h : (number --> (number --> (number --> (number --> number)))) mod : (number --> (number --> number)) maths.mod-h : (number --> (number --> (number --> (number --> number)))) /rem : (number --> (number --> (number * number))) maths./rem-h : (number --> (number --> (number --> (number --> (number * number))))) trunc-div : (number --> (number --> number)) rem : (number --> (number --> number)) /% : (number --> (number --> (number * number))) maths./%-h : (number --> (number --> (number --> (number --> (number --> (number * number)))))) div-eucl : (number --> (number --> number)) maths.adjust-Q : (number --> (number --> (number --> number))) % : (number --> (number --> number)) gcd : (number --> (number --> number)) lcm : (number --> (number --> number)) != : (A --> (A --> boolean)) max : (number --> (number --> number)) min : (number --> (number --> number)) run time: 3.560544013977051 secs typechecked in 30115 inferences loaded : symbol (2+) (load "pctronml.shen") type#pctron : symbol make-pctron : (string --> (string --> ((list (number * string)) --> ((list (number * string)) --> ((list (number * string)) --> ((list (number * string)) --> (number --> (number --> (number --> ((list string) --> pctron)))))))))) pctronNeuronName : (pctron --> string) pctronDocumentation : (pctron --> string) pctronInputs : (pctron --> (list (number * string))) pctronWeights : (pctron --> (list (number * string))) pctronDeltas : (pctron --> (list (number * string))) pctronSumDeltas : (pctron --> (list (number * string))) pctronActivationLevel : (pctron --> number) pctronNeuronOutput : (pctron --> number) pctronBeta : (pctron --> number) pctronOutputs : (pctron --> (list string)) setNeuronName : (pctron --> (string --> pctron)) setDocumentation : (pctron --> (string --> pctron)) setInputs : (pctron --> ((list (number * string)) --> pctron)) setWeights : (pctron --> ((list (number * string)) --> pctron)) setDeltas : (pctron --> ((list (number * string)) --> pctron)) setSumDeltas : (pctron --> ((list (number * string)) --> pctron)) setActivationLevel : (pctron --> (number --> pctron)) setNeuronOutput : (pctron --> (number --> pctron)) setBeta : (pctron --> (number --> pctron)) setOutputs : (pctron --> ((list string) --> pctron)) type#params : symbol 0.2 : number 2.0 : number 0.1 : number type#oblist : symbol [] : (list pctron) add-neuron-to-oblist : (pctron --> (list A)) type#neurons-levels : symbol [[]] : (list (list pctron)) subst-o : (pctron --> (list A)) subst-o-h : (pctron --> ((list pctron) --> (list pctron))) subst-n : (pctron --> (list A)) subst-strata : (pctron --> ((list (list pctron)) --> (list (list pctron)))) subst-stratum : (pctron --> ((list pctron) --> (list pctron))) subst-pctron : (pctron --> (pctron --> pctron)) update-neuron : (pctron --> (list A)) transfer-function : (pctron --> pctron) last : ((list A) --> A) activation-level : (pctron --> number) activation-level-h : ((list (number * string)) --> ((list (number * string)) --> (number --> number))) threshold : (number --> number) fire-synapses : (pctron --> (list A)) fire-synapses-h : (pctron --> (number --> ((list string) --> (list A)))) fire-synapse-aux : (pctron --> (number --> (pctron --> (list A)))) update-inputs : ((list (number * string)) --> (pctron --> ((number * string) --> (pctron --> (list (number * string)))))) update-pair : ((number * string) --> (pctron --> ((number * string) --> (pctron --> (number * string))))) find-neuron : (string --> pctron) find-neuron-h : (string --> ((list pctron) --> pctron)) type#neurons : symbol ["H1" "Neuron H1, (Winston, 1992)" [(@p 0.55 "1") (@p 0.55 "2") (@p 0.55 "3") (@p 1.0 "bias")] [(@p 0.55 "1") (@p 0.55 "2") (@p 0.55 "3") (@p 1.0 "bias")] [(@p 0.55 "1") (@p 0.55 "2") (@p 0.55 "3") (@p 1.0 "bias")] [(@p 0.55 "1") (@p 0.55 "2") (@p 0.55 "3") (@p 1.0 "bias")] 0.2 0.2 0.1 ["A" "S"]] : pctron ["H2" "Neuron H2, (Winston, 1992)" [(@p 0.55 "1") (@p 0.55 "2") (@p 0.55 "3") (@p 1.0 "bias")] [(@p 0.55 "1") (@p 0.55 "2") (@p 0.55 "3") (@p 0.55 "bias")] [(@p 0.55 "1") (@p 0.55 "2") (@p 0.55 "3") (@p 1.0 "bias")] [(@p 0.55 "1") (@p 0.55 "2") (@p 0.55 "3") (@p 1.0 "bias")] 0.2 0.2 0.1 ["A" "S"]] : pctron ["A" "Neuron Acquaintances, (Winston, 1992)" [(@p 0.6600000000000001 "H1") (@p 0.6600000000000001 "H2") (@p 1.0 "bias")] [(@p 0.6600000000000001 "H1") (@p 0.6600000000000001 "H2") (@p 0.2 "bias")] [(@p 0.6600000000000001 "H1") (@p 0.6600000000000001 "H2") (@p 0.2 "bias")] [(@p 0.6600000000000001 "H1") (@p 0.6600000000000001 "H2") (@p 0.2 "bias")] 0.2 0.2 0.1 []] : pctron ["S" "Neuron Siblings, (Winston, 1992)" [(@p 0.6600000000000001 "H1") (@p 0.6600000000000001 "H2") (@p 1.0 "bias")] [(@p 0.6600000000000001 "H1") (@p 0.6600000000000001 "H2") (@p 0.2 "bias")] [(@p 0.6600000000000001 "H1") (@p 0.6600000000000001 "H2") (@p 0.2 "bias")] [(@p 0.6600000000000001 "H1") (@p 0.6600000000000001 "H2") (@p 0.2 "bias")] 0.2 0.2 0.1 []] : pctron type#training-samples : symbol record-samples : ((list (list (list number))) --> (list A)) [] : (list A) [] : (list A) [] : (list A) [] : (list A) [] : (list A) init-layers : (--> (list A)) append-layers : ((list pctron) --> (list A)) [] : (list A) [] : (list A) [] : (list A) bpropm : (number --> (list A)) bpropm-aux : (number --> (number --> (list A))) bpropm-iterate : (--> (list A)) bpropm-iterate1 : ((list (list (list number))) --> (list A)) butlast : ((list A) --> (list A)) assign-inputs : ((list (list number)) --> (list A)) updateAssign : ((list pctron) --> ((list (list number)) --> (list A))) modify-inputs : (pctron --> ((list number) --> (list (number * string)))) modify-inputs-h : ((list (number * string)) --> ((list number) --> (list (number * string)))) launch-ann : (--> (list A)) launch-ann-h : ((list (list pctron)) --> (list A)) launch-stratum : ((list pctron) --> (list A)) beta-output-layer : ((list (list number)) --> (list A)) last-stratum : ((list (list pctron)) --> (list pctron)) last-sublist : ((list (list number)) --> (list number)) beta-output-layer-aux : ((list pctron) --> ((list number) --> (list A))) beta-layers : (--> (list A)) beta-layers-h : ((list (list pctron)) --> (number --> (list A))) beta-stratum : ((list pctron) --> (list A)) beta-neuron : (pctron --> (list A)) beta-sum : (pctron --> ((list string) --> number)) beta-sum-h : (pctron --> ((list string) --> (number --> number))) find-weight : (pctron --> (string --> number)) find-weight-h : ((list (number * string)) --> (string --> number)) deltas-1st : ((list (list number)) --> (list A)) iterate-1st-stratum : ((list pctron) --> ((list (list number)) --> (list A))) deltas-1st-pctron : (pctron --> ((list number) --> (list A))) deltas-1st-aux : ((list (number * string)) --> ((list number) --> (number --> (number --> (number --> (number --> (number --> (list (number * string))))))))) deltas-2nd : (--> (list A)) iterate-2-n-strata : ((list (list pctron)) --> (list A)) iterate-2-n-stratum : ((list pctron) --> (list A)) find-d : ((list (number * string)) --> (number --> number)) deltas-2-n-pctron : (pctron --> (list A)) deltas-2nd-aux : ((list (number * string)) --> ((list (number * string)) --> (number --> (number --> (number --> (number --> (number --> (list (number * string))))))))) find-1 : ((list (number * string)) --> (number --> (number * string))) zero-weight-changes : (--> (list A)) zero-weight-changes-aux : ((list pctron) --> (list A)) zero-weight-changes-pctron : (pctron --> pctron) null-changes : ((list (number * string)) --> (list (number * string))) add-up-weight-changes : (--> (list A)) add-up-aux : ((list pctron) --> (list A)) add-up-pctron : (pctron --> (list A)) sumDeltas1 : ((list (number * string)) --> ((list (number * string)) --> (list (number * string)))) sumDeltas-aux : ((list (number * string)) --> ((list (number * string)) --> ((list (number * string)) --> (list (number * string))))) subst-n-s : ((list (number * string)) --> ((number * string) --> (list (number * string)))) find-s : ((list (number * string)) --> (string --> number)) change-weights : (--> (list A)) change-weights-aux : ((list pctron) --> (list A)) change-weights-pctron : (pctron --> (list A)) sumIntoWeights : ((list (number * string)) --> ((list (number * string)) --> (list (number * string)))) sumIntoWeights-aux : ((list (number * string)) --> ((list (number * string)) --> ((list (number * string)) --> (list (number * string))))) describe-neuron : (string --> (list A)) demo : (--> (list A)) demo-h : ((list (list (list number))) --> (list A)) display-sample : ((list (list number)) --> (list A)) show-samples : (--> (list A)) show-samples-h : ((list (list (list number))) --> (list A)) show-sample-aux : ((list (list number)) --> (list A)) run time: 6.2704596519470215 secs typechecked in 43923 inferences loaded : symbol (3+) (describe-neuron "A") Neuron name: A Neuron documentation: Neuron Acquaintances, (Winston, 1992) Neuron inputs: [(@p 0.6600000000000001 "H1") (@p 0.6600000000000001 "H2") (@p 1.0 "bias")] Neuron weights: [(@p 0.6600000000000001 "H1") (@p 0.6600000000000001 "H2") (@p 0.2 "bias")] Neuron deltas: [(@p 0.6600000000000001 "H1") (@p 0.6600000000000001 "H2") (@p 0.2 "bias")] Neuron SumDeltas: [(@p 0.6600000000000001 "H1") (@p 0.6600000000000001 "H2") (@p 0.2 "bias")] Neuron activation: 0.2 Neuron output: 0.2 Neuron beta: 0.1 Neuron outputs: [] [] : (list A) (4+) (describe-neuron "S") Neuron name: S Neuron documentation: Neuron Siblings, (Winston, 1992) Neuron inputs: [(@p 0.6600000000000001 "H1") (@p 0.6600000000000001 "H2") (@p 1.0 "bias")] Neuron weights: [(@p 0.6600000000000001 "H1") (@p 0.6600000000000001 "H2") (@p 0.2 "bias")] Neuron deltas: [(@p 0.6600000000000001 "H1") (@p 0.6600000000000001 "H2") (@p 0.2 "bias")] Neuron SumDeltas: [(@p 0.6600000000000001 "H1") (@p 0.6600000000000001 "H2") (@p 0.2 "bias")] Neuron activation: 0.2 Neuron output: 0.2 Neuron beta: 0.1 Neuron outputs: [] [] : (list A) (5+) (describe-neuron "H1") Neuron name: H1 Neuron documentation: Neuron H1, (Winston, 1992) Neuron inputs: [(@p 0.55 "1") (@p 0.55 "2") (@p 0.55 "3") (@p 1.0 "bias")] Neuron weights: [(@p 0.55 "1") (@p 0.55 "2") (@p 0.55 "3") (@p 1.0 "bias")] Neuron deltas: [(@p 0.55 "1") (@p 0.55 "2") (@p 0.55 "3") (@p 1.0 "bias")] Neuron SumDeltas: [(@p 0.55 "1") (@p 0.55 "2") (@p 0.55 "3") (@p 1.0 "bias")] Neuron activation: 0.2 Neuron output: 0.2 Neuron beta: 0.1 Neuron outputs: [A S] [] : (list A) (6+) (describe-neuron "H2") Neuron name: H2 Neuron documentation: Neuron H2, (Winston, 1992) Neuron inputs: [(@p 0.55 "1") (@p 0.55 "2") (@p 0.55 "3") (@p 1.0 "bias")] Neuron weights: [(@p 0.55 "1") (@p 0.55 "2") (@p 0.55 "3") (@p 0.55 "bias")] Neuron deltas: [(@p 0.55 "1") (@p 0.55 "2") (@p 0.55 "3") (@p 1.0 "bias")] Neuron SumDeltas: [(@p 0.55 "1") (@p 0.55 "2") (@p 0.55 "3") (@p 1.0 "bias")] Neuron activation: 0.2 Neuron output: 0.2 Neuron beta: 0.1 Neuron outputs: [A S] [] : (list A) (7+) (time (bpropm 600)) run time: 15.385219812393188 secs [] : (list A) (8+) (describe-neuron "A") Neuron name: A Neuron documentation: Neuron Acquaintances, (Winston, 1992) Neuron inputs: [(@p 0.6600000000000001 "H1") (@p 0.6600000000000001 "H2") (@p 1.0 "bias")] Neuron weights: [(@p 0.5529170276282771 "H1") (@p 0.5529170276282771 "H2") (@p -0.6112346391797108 "bias")] Neuron deltas: [(@p -0.01948958840353985 "H1") (@p -0.01948958840353985 "H2") (@p -0.029529679399302795 "bias") (@p -0.14764839699651397 "bias")] Neuron SumDeltas: [(@p -0.01999682171843461 "H1") (@p -0.01999682171843461 "H2") (@p -0.15149107362450462 "bias")] Neuron activation: 0.29650271558245356 Neuron output: 0.6440544336456786 Neuron beta: -0.6440544336456786 Neuron outputs: [] [] : (list A) (9+) (describe-neuron "S") Neuron name: S Neuron documentation: Neuron Siblings, (Winston, 1992) Neuron inputs: [(@p 0.6600000000000001 "H1") (@p 0.6600000000000001 "H2") (@p 1.0 "bias")] Neuron weights: [(@p 0.5062522495768471 "H1") (@p 0.5062522495768471 "H2") (@p -0.9647556850238913 "bias")] Neuron deltas: [(@p 0.018190890508243945 "H1") (@p 0.018190890508243945 "H2") (@p 0.027561955315521126 "bias") (@p 0.13780977657760562 "bias")] Neuron SumDeltas: [(@p -0.01999682171843448 "H1") (@p -0.01999682171843448 "H2") (@p -0.15149107362450365 "bias")] Neuron activation: -0.11861583728961578 Neuron output: 0.44096867337175794 Neuron beta: 0.5590313266282421 Neuron outputs: [] [] : (list A) (10+) (quit) antti@antti-HP-630-Notebook-PC ~/pctronm $