diff deep/convolutional_dae/scdae.py @ 380:0473b799d449

merge
author Yoshua Bengio <bengioy@iro.umontreal.ca>
date Mon, 26 Apr 2010 14:56:34 -0400
parents 5ddb1878dfbc
children
line wrap: on
line diff
--- a/deep/convolutional_dae/scdae.py	Mon Apr 26 14:56:06 2010 -0400
+++ b/deep/convolutional_dae/scdae.py	Mon Apr 26 14:56:34 2010 -0400
@@ -13,7 +13,9 @@
         LayerStack.__init__(self, [ConvAutoencoder(filter_size=filter_size, 
                                                    num_filt=num_filt,
                                                    num_in=num_in,
-                                                   noisyness=corruption,
+                                                   noise=corruption,
+                                                   err=errors.cross_entropy,
+                                                   nlin=nlins.sigmoid,
                                                    dtype=dtype),
                                    MaxPoolLayer(subsampling)])
 
@@ -29,7 +31,7 @@
                                          subsamplings, corruptions):
         layers.append(cdae(fsize, nfilt, old_nfilt, subs, corr, dtype))
         old_nfilt = nfilt
-    return LayerStack(layers)
+    return LayerStack(layers, name='scdae')
 
 def mlp(layer_sizes, dtype):
     layers = []
@@ -38,7 +40,7 @@
         layers.append(SimpleLayer(old_size, size, activation=nlins.tanh,
                                   dtype=dtype))
         old_size = size
-    return LayerStack(layers)
+    return LayerStack(layers, name='mlp')
 
 def scdae_net(in_size, filter_sizes, num_filts, subsamplings,
               corruptions, layer_sizes, out_size, dtype):
@@ -51,7 +53,8 @@
     rl2 = ReshapeLayer((None, outs))
     layer_sizes = [outs]+layer_sizes
     ls2 = mlp(layer_sizes, dtype)
-    lrl = SimpleLayer(layer_sizes[-1], out_size, activation=nlins.softmax)
+    lrl = SimpleLayer(layer_sizes[-1], out_size, activation=nlins.softmax, 
+                      name='output')
     return NNet([rl1, ls, rl2, ls2, lrl], error=errors.nll)
 
 def build_funcs(batch_size, img_size, filter_sizes, num_filters, subs,
@@ -155,13 +158,20 @@
 
     series = {}
     h5f = tables.openFile('series.h5', 'w')
+    class PrintWrap(object):
+        def __init__(self, series):
+            self.series = series
+
+        def append(self, idx, value):
+            print idx, value
+            self.series.append(idx, value)
 
     series['recons_error'] = AccumulatorSeriesWrapper(
-        base_series=ErrorSeries(error_name='reconstruction_error',
-                                table_name='reconstruction_error',
-                                hdf5_file=h5f,
-                                index_names=('layer', 'epoch'),
-                                title="Reconstruction error (mse)"),
+        base_series=PrintWrap(ErrorSeries(error_name='reconstruction_error',
+                                          table_name='reconstruction_error',
+                                          hdf5_file=h5f,
+                                          index_names=('layer', 'epoch'),
+                                          title="Reconstruction error (mse)")),
         reduce_every=100)
         
     series['train_error'] = AccumulatorSeriesWrapper(
@@ -201,9 +211,9 @@
     pretrain_funcs, trainf, evalf, net = build_funcs(
         img_size = (32, 32),
         batch_size=batch_size, filter_sizes=[(5,5), (3,3)],
-        num_filters=[4, 4], subs=[(2,2), (2,2)], noise=[0.2, 0.2],
+        num_filters=[20, 4], subs=[(2,2), (2,2)], noise=[0.2, 0.2],
         mlp_sizes=[500], out_size=10, dtype=numpy.float32,
-        pretrain_lr=0.01, train_lr=0.1)
+        pretrain_lr=0.001, train_lr=0.1)
     
     t_it = repeat_itf(dset.train, batch_size)
     pretrain_fs, train, valid, test = massage_funcs(