# Set PCA subclass from argument. if args.algorithm == 'cov_eig': PCAImpl = CovEigPCA elif args.algorithm == 'svd': PCAImpl = SVDPCA elif args.algorithm == 'online': PCAImpl = OnlinePCA conf['minibatch_size'] = args.minibatch_size else: # This should never happen. raise NotImplementedError(args.algorithm) # Load precomputed PCA transformation if requested; otherwise compute it. if args.load_file: pca = Block.load(args.load_file) else: print "... computing PCA" pca = PCAImpl(**conf) pca.train(train_data) # Save the computed transformation. pca.save(args.save_file) # Apply the transformation to test and valid subsets. inputs = tensor.matrix() pca_transform = theano.function([inputs], pca(inputs)) valid_pca = pca_transform(valid_data) test_pca = pca_transform(test_data) print >> sys.stderr, "New shapes:", map(numpy.shape, [valid_pca, test_pca]) # TODO: Compute ALC here when the code using the labels is ready.