https://www.noisebridge.net/index.php?title=User:Sethalves/scheme-perceptron&feed=atom&action=history
User:Sethalves/scheme-perceptron - Revision history
2024-03-28T18:35:12Z
Revision history for this page on the wiki
MediaWiki 1.39.4
https://www.noisebridge.net/index.php?title=User:Sethalves/scheme-perceptron&diff=3872&oldid=prev
Sethalves: New page: <pre> #!/usr/bin/guile \ --debug -s !# (use-modules (ice-9 format)) (define (dot-product v0 v1) (apply + (map (lambda (m0 m1) (* m0 m1)) v0 v1))) (define (sigmoid beta x) ;; sig...
2009-03-27T01:42:24Z
<p>New page: <pre> #!/usr/bin/guile \ --debug -s !# (use-modules (ice-9 format)) (define (dot-product v0 v1) (apply + (map (lambda (m0 m1) (* m0 m1)) v0 v1))) (define (sigmoid beta x) ;; sig...</p>
<p><b>New page</b></p><div><br />
<pre><br />
#!/usr/bin/guile \<br />
--debug -s<br />
!#<br />
<br />
<br />
(use-modules (ice-9 format))<br />
<br />
<br />
(define (dot-product v0 v1)<br />
(apply + (map (lambda (m0 m1) (* m0 m1)) v0 v1)))<br />
<br />
<br />
(define (sigmoid beta x)<br />
;; sigmoid (beta, x) = 1/(1+e^(-beta*x))<br />
(/ 1.0 (+ 1.0 (exp (* x (- 0.0 beta))))))<br />
<br />
<br />
(define (sigmoid-1 x)<br />
(sigmoid 1.0 x))<br />
<br />
<br />
(define (perceptron)<br />
(let ((inputs (list (list 1 0 0) (list 1 0 1) (list 1 1 0) (list 1 1 1)))<br />
(answers (list 1 1 1 0))<br />
(weights (list 0.0 0.0 0.0)))<br />
(format #t "inputs : ~a~%" inputs)<br />
(format #t "answers : ~a~%" answers)<br />
(format #t "starting weights : ~a~%" weights)<br />
(format #t "ending weights : ~a~%"<br />
(mainfunc inputs answers weights))<br />
))<br />
<br />
<br />
(define (mainfunc inputs answers weights)<br />
;; (format #t "weights : ~a~%" weights)<br />
(let ((checked (check-all-inputs inputs weights answers)))<br />
(if (equal? checked weights)<br />
weights<br />
(mainfunc inputs answers checked))))<br />
<br />
<br />
(define (check-all-inputs inputs weights answers)<br />
(let loop ((inputs inputs)<br />
(weights weights)<br />
(answers answers))<br />
(if (null? inputs) weights<br />
(loop (cdr inputs)<br />
(adjust-weights (car inputs) weights (car answers))<br />
(cdr answers)))))<br />
<br />
<br />
(define (adjust-weights inputs weights answer)<br />
(let* ((got (sigmoid-1 (dot-product inputs weights)))<br />
(err (- answer got)))<br />
(map (lambda (input weight)<br />
(* (+ weight (* err 0.1)) input))<br />
inputs<br />
weights)))<br />
<br />
(perceptron)<br />
<br />
</pre></div>
Sethalves