return data images = normalize_data(images) patch_width = 8 n_filters = 25 n_samples, n_rows, n_cols = images.shape n_features = n_rows * n_cols patches = [extract_patches_2d(images[i], (patch_width, patch_width), max_patches=1000, random_state=i) for i in range(n_samples)] patches = numpy.array(patches).reshape(-1, patch_width * patch_width) print("Dataset consists of %d samples" % n_samples) estimator = SparseAutoEncoder(n_filters=n_filters, lmbd=0.0001, beta=3, sparsity_param=0.01, maxfun=500, verbose=True) estimator.fit(patches) pylab.figure(1) for i in range(estimator.W1_.shape[0]): rows = max(int(numpy.sqrt(n_filters)), 2) cols = max(int(numpy.sqrt(n_filters)), 2) pylab.subplot(rows, cols, i + 1) pylab.imshow(estimator.W1_[i].reshape(patch_width, patch_width), cmap=pylab.cm.gray, interpolation="nearest") pylab.xticks(()) pylab.yticks(()) pylab.figure(2) for i in range(estimator.W2_.shape[1]):
if __name__ == "__main__": numpy.random.seed(0) train_images, T = load_mnist("training", 60000) train_images -= train_images.mean(axis=0) test_images, T2 = load_mnist("testing", 10000) test_images -= train_images.mean(axis=0) print "Dataset loaded" train_filter = train_images[:10000] train_classifier = train_images label_classifier = T n_filters = 196 estimator = SparseAutoEncoder(n_filters=n_filters, lmbd=3e-3, beta=3, sparsity_param=0.1, maxfun=400, verbose=True) estimator.fit(train_filter) X = estimator.predict(train_classifier) X2 = estimator.predict(test_images) X_mean = X.mean(axis=0) X_std = X.std(axis=0) + 1e-8 X = scale_features(X, X_mean, X_std) X2 = scale_features(X2, X_mean, X_std) print "Transformed datasets" test_classifier(X, label_classifier, X2, T2) pylab.figure() pylab.subplots_adjust(wspace=0.0, hspace=0.0) for i in range(estimator.W1_.shape[0]): rows = int(numpy.sqrt(n_filters))