Advertisement
bsddeamon

xor-ann.ss

Jul 6th, 2016
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 0.88 KB | None | 0 0
  1. (import (gauche array) (srfi 27))
  2. (define rand (random-source-make-reals default-random-source))
  3. (define (init i j) (tabulate-array (shape 0 i 0 j) (lambda (i j) (- (* 2 (rand)) 1))))
  4. (define (connect in out) (array-map (lambda (z) (/ 1 (+ 1 (exp (- 0 z))))) (array-mul in out)))
  5. (define (learn error output) (array-map (lambda (error out) (* error out (- 1 out))) error output))
  6. (define (update synapse in error) (array-map + synapse (array-mul (array-transpose in) error)))
  7. (define X (array (shape 0 4 0 3) 0 0 1 0 1 1 1 0 1 1 1 1)) (define y (array (shape 0 4 0 1) 0 1 1 0))
  8. (let f ([k 60000] [syn1 (init 4 1)] [syn0 (init 3 4)])
  9.   (let* ([l1 (connect X syn0)] [l2 (connect l1 syn1)] [error2 (learn (array-map - y l2) l2)]
  10.            [error1 (learn (array-mul error2 (array-transpose syn1)) l1)])
  11.     (if (< k 1) (list syn0 syn1) (f (- k 1) (update syn1 l1 error2) (update syn0 X error1))))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement