samer@0: (import "samer.models.*") samer@0: samer@0: (define (newica x) samer@0: (define ica (ICA. x)) samer@0: (define scaler (DiffScaler. (.output ica))) samer@0: (define genexp (GeneralisedExponential. (.output scaler))) samer@0: samer@0: ;;; Training samer@0: (define t-scaler (BatchedTrainer. (.getScaleTrainer scaler) 4)) samer@0: (define t-genexp (BatchedTrainer. (.getTrainer genexp) 256)) samer@0: (define t-ica (BatchedTrainer. (.getTrainer ica) (.size x))) samer@0: samer@0: (.setOutputModel ica scaler) samer@0: (.setOutputModel scaler genexp) samer@0: samer@0: ;;; resync and compute basis every 16 ICA updates samer@0: (.setFlushTask t-ica samer@0: (sub 32 (seq samer@0: (ICAScalerSync. ica scaler) samer@0: (task (exec ica "basis"))))) samer@0: samer@0: ;;; Runnable tasks samer@0: (addtasks samer@0: ica samer@0: scaler samer@0: genexp samer@0: (task (.compute scaler)) samer@0: t-genexp t-scaler t-ica samer@0: ) samer@0: samer@0: ;;; return all bits and pieces samer@0: (list ica scaler genexp t-ica t-scaler t-genexp) samer@0: )