argmax_acc = 0 for epoch in xrange(training_epochs): epoch_time = timeit.default_timer() mean_cost = [] for batch_index, batch in enumerate(batches): rbm.update(batch, persistent=True, k=k) sys.stdout.write("\rEpoch advancement: %d%%" % (100*float(batch_index)/len(batches))) sys.stdout.flush() # Training Logistic regression sys.stdout.write("\rTraining softmax...") sm_time = timeit.default_timer() softmax_classifier = LogisticRegression(penalty='l1', C=1.0, solver='lbfgs', multi_class='multinomial') softmax_classifier.fit(rbm.propup(train_set[:,n_labels:], np.ones((len(train_set),n_hidden))), train_labels) sys.stdout.write('\rSoftmax trained in %f minutes.\n' % ((timeit.default_timer()-sm_time) / 60.)) sys.stdout.write("Evaluating accuracy...") cv_time = timeit.default_timer() acc = softmax_classifier.score(rbm.propup(test_set[:,n_labels:], np.ones((len(test_set),n_hidden))), test_labels) accuracies.append(acc) sys.stdout.write('''\rEpoch %i took %f minutes, accuracy (computed in %f minutes) is %f.\n''' % (epoch, ((cv_time-epoch_time) / 60.), ((timeit.default_timer()-cv_time) / 60.), acc)) if do_report: report["costs"][epoch] = np.mean(mean_cost) report["accuracy"][epoch] = acc if (acc>argmax_acc):