comparison data_generation/mnist_resized/rescale_mnist.py @ 625:128bc92897f2

Script to generate resized version of mnist in two different ways: rescaling and zeropadding
author Salah Rifai <salahmeister@gmail.com>
date Wed, 16 Mar 2011 00:05:39 -0400
parents
children
comparison
equal deleted inserted replaced
624:49933073590c 625:128bc92897f2
1 import numpy,cPickle,gzip,Image,pdb,sys
2
3
4 def zeropad(vect,img_size=(28,28),out_size=(32,32)):
5 delta = (numpy.abs(img_size[0]-out_size[0])/2,numpy.abs(img_size[1]-out_size[1])/2)
6 newvect = numpy.zeros(out_size)
7 newvect[delta[0]:-delta[0],delta[1]:-delta[1]] = vect.reshape(img_size)
8 return newvect.flatten()
9
10 def rescale(vect,img_size=(28,28),out_size=(32,32), filter=Image.NEAREST):
11 im = Image.fromarray(numpy.asarray(vect.reshape(img_size)*255.,dtype='uint8'))
12 return (numpy.asarray(im.resize(out_size,filter),dtype='float32')/255.).flatten()
13
14
15 #pdb.set_trace()
16 def rescale_mnist(newsize=(32,32),output_file='mnist_rescaled_32_32.pkl',mnist=cPickle.load(gzip.open('mnist.pkl.gz'))):
17 newmnist = []
18 for set in mnist:
19 newset=numpy.zeros((len(set[0]),newsize[0]*newsize[1]))
20 for i in xrange(len(set[0])):
21 print i,
22 sys.stdout.flush()
23 newset[i] = rescale(set[0][i])
24 newmnist.append((newset,set[1]))
25 cPickle.dump(newmnist,open(output_file,'w'),protocol=-1)
26 print 'Done rescaling'
27
28
29 def zeropad_mnist(newsize=(32,32),output_file='mnist_zeropadded_32_32.pkl',mnist=cPickle.load(gzip.open('mnist.pkl.gz'))):
30 newmnist = []
31 for set in mnist:
32 newset=numpy.zeros((len(set[0]),newsize[0]*newsize[1]))
33 for i in xrange(len(set[0])):
34 print i,
35 sys.stdout.flush()
36 newset[i] = zeropad(set[0][i])
37 newmnist.append((newset,set[1]))
38 cPickle.dump(newmnist,open(output_file,'w'),protocol=-1)
39 print 'Done padding'
40
41 if __name__ =='__main__':
42 print 'Creating resized datasets'
43 mnist_ds = cPickle.load(gzip.open('mnist.pkl.gz'))
44 #zeropad_mnist(mnist=mnist_ds)
45 rescale_mnist(mnist=mnist_ds)
46 print 'Finished.'