activation_func="tanh", input_noise=0.3) cnn.compileOutputFunctions( target="regression") #compiles the cnn.get_error function as well cnn.setOptimizerParams(SGD={'LR': 5e-1, 'momentum': 0.9}, weight_decay=0) print "training..." for i in range(40000): d, l = data.getbatch(batch_size) loss, loss_instance, time_per_step = cnn.trainingStep(d, d, mode="SGD") if i % 100 == 0: print "update:", i, "; Training error:", loss cnn.layers[3].input_noise.set_value(0.0) loss, _, test_predictions = cnn.get_error(data.valid_d.reshape((10000, 784)), data.valid_d.reshape((10000, 784))) print "Final error:", loss print "Done." plt.figure(figsize=(14, 6)) plt.subplot(121) images = embedMatricesInGray(data.valid_d[:200].reshape((200, 28, 28)), 1) plt.imshow(images, interpolation='none', cmap='gray') plt.title('Data') plt.subplot(122) recon = embedMatricesInGray(test_predictions[:200].reshape((200, 28, 28)), 1) plt.imshow(recon, interpolation='none', cmap='gray') plt.title('Reconstruction') d_v = data.valid_d
force_no_dropout=True) cnn.addPerceptronLayer(200, activation_func="tanh") cnn.addPerceptronLayer(150, activation_func="tanh") cnn.addPerceptronLayer( 10, activation_func="tanh", force_no_dropout=True ) # need 10 outputs as there are 10 classes in the data set cnn.compileOutputFunctions() cnn.setOptimizerParams(SGD={'LR': 1e-2, 'momentum': 0.9}, weight_decay=0) print "training..." for i in range(10000): d, l = data.getbatch(batch_size) loss, loss_instance, time_per_step = cnn.trainingStep(d, l, mode="SGD") if i % 100 == 0: r = cnn.getDropoutRates() cnn.setDropoutRates([ 0.0, ] * len(r)) valid_loss, valid_error, valid_predictions = cnn.get_error( data.valid_d, data.valid_l) print "update:", i, "; Validation loss:", valid_loss, "Validation error:", valid_error * 100., "%" cnn.setDropoutRates(r) cnn.setDropoutRates([ 0.0, ] * len(r)) loss, error, test_predictions = cnn.get_error(data.test_d, data.test_l) print "Test loss:", loss, "Test error:", error * 100., "%" print "Done."
# Create CNN # batch_size = 100 cnn = MixedConvNN((28, 28), input_depth=1) cnn.addConvLayer(10, 5, pool_shape=2, activation_func="abs") # (nof, filtersize) cnn.addConvLayer(8, 5, pool_shape=2, activation_func="abs") cnn.addPerceptronLayer(100, activation_func="abs") cnn.addPerceptronLayer(80, activation_func="abs") cnn.addPerceptronLayer( 10, activation_func="abs" ) # need 10 outputs as there are 10 classes in the data set cnn.compileOutputFunctions() cnn.setOptimizerParams(SGD={'LR': 1e-2, 'momentum': 0.9}, weight_decay=0) print "training..." for i in range(5000): d, l = data.getbatch(batch_size) loss, loss_instance, time_per_step = cnn.trainingStep(d, l, mode="SGD") if i % 100 == 0: valid_loss, valid_error, valid_predictions = cnn.get_error(data.valid_d, data.valid_l) print "update:", i, "; Validation loss:", valid_loss, "Validation error:", valid_error * 100., "%" loss, error, test_predictions = cnn.get_error(data.test_d, data.test_l) print "Test loss:", loss, "Test error:", error * 100., "%" print "Done."
cnn.addTiedAutoencoderChain(n_layers=None, activation_func="tanh", input_noise=0.3) cnn.compileOutputFunctions(target="regression") #compiles the cnn.get_error function as well cnn.setOptimizerParams(SGD={'LR': 5e-1, 'momentum': 0.9}, weight_decay=0) print "training..." for i in range(40000): d, l = data.getbatch(batch_size) loss, loss_instance, time_per_step = cnn.trainingStep(d, d, mode="SGD") if i % 100 == 0: print "update:", i, "; Training error:", loss cnn.layers[3].input_noise.set_value(0.0) loss, _, test_predictions = cnn.get_error(data.valid_d.reshape((10000, 784)), data.valid_d.reshape((10000, 784))) print "Final error:", loss print "Done." plt.figure(figsize=(14, 6)) plt.subplot(121) images = embedMatricesInGray(data.valid_d[:200].reshape((200, 28, 28)), 1) plt.imshow(images, interpolation='none', cmap='gray') plt.title('Data') plt.subplot(122) recon = embedMatricesInGray(test_predictions[:200].reshape((200, 28, 28)), 1) plt.imshow(recon, interpolation='none', cmap='gray') plt.title('Reconstruction') d_v = data.valid_d