import os HOME = os.environ['HOME'] import numpy import numpy.random import pylab from dispims_color import dispims_color import hebbian_kmeans patchsize = 8 numhid = 100 numtrain = 50000 datadir = HOME+'/research/data/cifar/cifar-10-batches-py' rng = numpy.random.RandomState(1) def crop_patches_color(image, keypoints, patchsize): patches = numpy.zeros((len(keypoints), 3*patchsize**2)) for i, k in enumerate(keypoints): patches[i, :] = image[k[0]-patchsize/2:k[0]+patchsize/2, k[1]-patchsize/2:k[1]+patchsize/2,:].flatten() return patches def pca(data, var_fraction): """ principal components, retaining as many components as required to retain var_fraction of the variance Returns projected data, projection mapping, inverse mapping, mean""" from numpy.linalg import eigh u, v = eigh(numpy.cov(data, rowvar=1, bias=1)) v = v[:, numpy.argsort(u)[::-1]] u.sort() u = u[::-1] u = u[u.cumsum()