Skip to content

Instantly share code, notes, and snippets.

@wedesoft
Last active December 7, 2018 12:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wedesoft/d36217fc3ee394145d310d2943ddce3d to your computer and use it in GitHub Desktop.
Save wedesoft/d36217fc3ee394145d310d2943ddce3d to your computer and use it in GitHub Desktop.
download and view MNIST data
(use-modules (oop goops) (ice-9 binary-ports) (rnrs bytevectors) (aiscm core) (system foreign) (aiscm xorg) (ice-9 format)
; http://yann.lecun.com/exdb/mnist/
(define f (open-file "train-labels-idx1-ubyte" "rb"))
(define magic (bytevector-u32-ref (get-bytevector-n f 4) 0 (endianness big)))
(define n (bytevector-u32-ref (get-bytevector-n f 4) 0 (endianness big)))
(define bv (get-bytevector-n f n))
(define labels (make (multiarray <ubyte> 1) #:memory (bytevector->pointer bv) #:shape (list n)))
(define f (open-file "train-images-idx3-ubyte" "rb"))
(define magic (bytevector-u32-ref (get-bytevector-n f 4) 0 (endianness big)))
(define n (bytevector-u32-ref (get-bytevector-n f 4) 0 (endianness big)))
(define h (bytevector-u32-ref (get-bytevector-n f 4) 0 (endianness big)))
(define w (bytevector-u32-ref (get-bytevector-n f 4) 0 (endianness big)))
(define bv (get-bytevector-n f (* n h w)))
(define images (make (multiarray <ubyte> 3) #:memory (bytevector->pointer bv) #:shape (list n h w)))
(define i -1)
(show
(lambda _
(set! i (modulo (1+ i) n))
(format #t "~a~&" (get labels i))
(get images i))
#:io IO-XIMAGE #:width 256)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment