# HG changeset patch # User James Bergstra # Date 1301610551 14400 # Node ID 8110ca3cec3facedd1c2f2145bfed56a33a255dc # Parent c421bac46a975907b2e14910e4a3efcc82b82a7b# Parent fbe470217937b7d61d6056c62167557875af0505 merge diff -r fbe470217937 -r 8110ca3cec3f pylearn/io/image_tiling.py --- a/pylearn/io/image_tiling.py Wed Mar 16 20:20:02 2011 -0400 +++ b/pylearn/io/image_tiling.py Thu Mar 31 18:29:11 2011 -0400 @@ -11,9 +11,9 @@ ndar *= 1.0 / max(ndar.max(),eps) return ndar -def tile_raster_images(X, img_shape, +def tile_raster_images(X, img_shape, tile_shape=None, tile_spacing=(1,1), - scale_rows_to_unit_interval=True, + scale_rows_to_unit_interval=True, output_pixel_vals=True, min_dynamic_range=1e-4, ): @@ -40,7 +40,19 @@ :rtype: a 2-d array with same dtype as X. """ - if isinstance(X, tuple): + if len(img_shape)==3 and img_shape[2]==3: + # make this save an rgb image + + return tile_raster_images( + (X[:,0::3], X[:,1::3], X[:,2::3], None), + img_shape=img_shape[:2], + tile_shape=tile_shape, + tile_spacing=tile_spacing, + scale_rows_to_unit_interval=scale_rows_to_unit_interval, + output_pixel_vals=output_pixel_vals, + min_dynamic_range=min_dynamic_range) + + if isinstance(X, tuple): n_images_in_x = X[0].shape[0] else: n_images_in_x = X.shape[0] diff -r fbe470217937 -r 8110ca3cec3f pylearn/preprocessing/pca.py --- a/pylearn/preprocessing/pca.py Wed Mar 16 20:20:02 2011 -0400 +++ b/pylearn/preprocessing/pca.py Thu Mar 31 18:29:11 2011 -0400 @@ -72,7 +72,8 @@ return w,v -def pca_from_examples(X, max_components=None, max_energy_fraction=None, x_centered=False): +def pca_from_examples(X, max_components=None, max_energy_fraction=None, + x_centered=False, inplace=False): """Return ((eigvals, eigvecs), centered_X) of observations `X` (1-per-row) This function exists to wrap several algorithms for getting the principle components. @@ -90,10 +91,11 @@ :returns: ((eigvals, eigvecs), centered_X) of PCA decomposition """ - if x_centered: - centered_X = X - else: - centered_X = X - numpy.mean(X, axis=0) + if not inplace: + X = X.copy() + centered_X = X + if not x_centered: + centered_X -= numpy.mean(centered_X, axis=0) cov_X = numpy.dot(centered_X.T, centered_X) / (len(X)- 1) evals, evecs = pca_from_cov(cov_X, max_components=max_components, max_energy_fraction=max_energy_fraction)