anchor.diff:            (let* ((ib (+ i b))
                    (target-ib (aref target ib)))
               (when (/= 0.0 target-ib)
  -              (set sum (+ sum (* (aref d ib)
  -                                 target-ib
  +              (set sum (+ sum (* target-ib
                                    (- softmax-ia
                                       (if (= a b)
                                           1.0
  
positive.code:          (n (* (n-stripes lump) (size lump))))
      (if (use-cuda-p)
          (cuda-softmax-xe group-size x n softmax
                           :grid-dim (list (ceiling (/ n group-size) 256) 1 1)
                           :block-dim (list 256 1 1))
          (lisp-softmax-xe group-size x n softmax))))
  
  (define-lisp-kernel (lisp-softmax-xe)
  
negative.code:             (make-mat (list n (size lump))
                        :max-size (* (max-n-stripes lump) (size lump))))))
  
  (eval-when (:compile-toplevel :load-toplevel :execute)
    (defparameter *n-softmax-threads* 128))
  
  (defmethod forward ((lump ->softmax-xe-loss))
    (let* ((x (nodes (x lump)))
           (group-size (group-size lump))
  