anchor.diff:  (assert (= 3 (linear-at-points 3 1 5 2 7)))
   
   (defmethod learning-rate ((trainer mnist-dbm-segment-trainer))
  -  (* (slot-value trainer 'learning-rate)
  -     (linear-at-points 0 1 (* 10 (length *training-images*)) 0
  -                       (n-inputs trainer))))
  +  ;; This is adjusted for each batch. Ruslan's code adjust it per
  +  ;; epoch.
  +  (/ (slot-value trainer 'learning-rate)
  +     (expt 1.000015 (* (/ (n-inputs trainer)
  +                          (length *training-images*))
  +                       600))))
   
   #+nil
   (defmethod n-gibbs ((trainer mnist-dbm-trainer))
  
positive.code:                         *dbn/1*))))
          (t
           (setq *dbn/1* (make-mnist-dbn/1))
           (init-mnist-dbn *dbn/1*)
           (train-mnist-dbn *dbn/1* :n-epochs 50 :learning-rate 0.1
                            :decay 0.0002 :visible-sampling nil)
           (save-weights (merge-pathnames "mnist-1.dbn" *mnist-dir*) *dbn/1*)))
  
negative.code: 
  (defclass softmax-label-chunk* (softmax-label-chunk) ())
  
  ;;; Samplers don't return examples, but a list of (SAMPLE
  ;;; OMIT-LABEL-P). Work around it.
  (defmethod maybe-make-misclassification-measurer ((chunk softmax-label-chunk*))
    (let ((measurer (call-next-method)))
      (when measurer
  