view scripts/nist_read.py @ 41:fdb0e0870fb4

Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP. - Modifications à pipeline.py - Wrappé la boucle du pipeline dans une classe - Isolé le problème de itérer sur les batches et les complexités dans des itérateurs - Permet d'avoir des ordres compliqués de batch (plusieurs sources), de complexités - Maintenant regenerate_parameters() est appelé pour chaque image. - Command line arguments avec getopt(). On pourra rajouter des options ainsi. - run_pipeline.py - Le but est de permettre de passer des arguments. Pas facile (pas trouvé comment de façon simple) avec la command line pour appeler GIMP en mode batch. C'est un hack ici. - Le but ultime est de permettre de lancer les jobs sur les clusters avec dbidispatch en précisant les options (diff. pour chaque job) sur la ligne de commande.
author fsavard
date Wed, 03 Feb 2010 17:08:27 -0500
parents 7fb10ae0efec
children
line wrap: on
line source

#!/usr/bin/env python

# L'execution de "ipython -pylab nist_read.py" est recommande 

# Pour lire les fichiers NIST, qui sont en format filetensor, il vous faut la
# librarie pylearn, disponible en executant:
# hg clone http://hg.assembla.com/pylearn Pylearn
# et en mettant le repertoire Pylearn dans votre PYTHONPATH

from pylearn.io import filetensor as ft
import pylab, numpy

# repertoire qui contient les donnees NIST
# le repertoire suivant va fonctionner si vous etes connecte sur un ordinateur
# du reseau DIRO
datapath = '/data/lisa/data/nist/by_class/'

# le fichier .ft contient chiffres NIST dans un format efficace. Les chiffres
# sont stockes dans une matrice de NxD, ou N est le nombre d'images, est D est
# le nombre de pixels par image (32x32 = 1024). Chaque pixel de l'image est une
# valeur entre 0 et 255, correspondant a un niveau de gris. Les valeurs sont
# stockees comme des uint8, donc des bytes.
f = open(datapath+'digits/digits_train_data.ft')

# Verifier que vous avez assez de memoire pour loader les donnees au complet
# dans le memoire. Sinon, utilisez ft.arraylike, une classe construite
# specialement pour des fichiers qu'on ne souhaite pas loader dans RAM.
d = ft.read(f)

# Affichage d'une image 
pylab.imshow(d[0].reshape((32,32)))
pylab.show()

# NB: N'oubliez pas de diviser les valeurs des pixels par 255. si jamais vous
# utilisez les donnees commes entrees dans un reseaux de neurones et que vous 
# voulez des entres entre 0 et 1.

# digits_train_data.ft contient les images, digits_train_labels.ft contient les
# etiquettes
f = open(datapath+'digits/digits_train_labels.ft')
labels = ft.read(f)
print 'etiquette: ', labels[0]