anchor.diff:  (defun logistic-derivative (output)
     (* output (- 1 output)))
   
  -(defun relu (input)
  -  (max 0 input))
  -
  -(defun relu-derivative (output)
  -  (if (> output 0.0) 1.0 0.01))
  +(defun relu (x)
  +  (max 0.01 x))
  +
  +(defun relu-derivative (x)
  +  (if (> x 0.0) 1.0 0.01))
   
   (defun transfer-functions (name function-or-derivative)
     (ds-get (ds `(:map :bound-logistic
  
positive.code:             (report-function function)
              (time-span-between-reports integer))
      (loop
         initially (with-open-file (stream "/tmp/training.log" :direction :output :if-exists :append)
                     (format stream "time-span-between-reports: ~a~%" time-span-between-reports))
         ;; with vec = (tset-list-to-tset-vectors t-set)
         ;; with shuffled-vector-indices =
         ;;   (shuffle (loop for a from 0 below (length vec) collect a))
  
negative.code:                     ((= layer-index (1- (length (topology net)))) :output)
                      (t :hidden))
                :neuron-count (elt (topology net) layer-index)
                :transfer-tag
                (if (or (zerop layer-index)
                        (= layer-index (1- (length (topology net)))))
                    :logistic
                    (transfer-tag net))
                :net net)))
    (loop for layer in (layers net)
       for next-layer = (if (eql (layer-type layer) :output)
  