if (iter + 1) % validation_frequency == 0: validation_losses = validate_model() this_validation_loss = mean(validation_losses) print_flush("... " + time.strftime("%c") + ": epoch %i, minibatch %i/%i, validation error %.20f" % (epoch, minibatch_index + 1, n_train_batches,this_validation_loss)) # if we got the best validation score until now if this_validation_loss < best_validation_loss: # improve patience if loss improvement is good enough if this_validation_loss < best_validation_loss * improvement_threshold: patience = max(patience, iter * patience_increase) # save best validation score and iteration number best_validation_loss = this_validation_loss best_iter = iter stacked_autoencoder.save(result_path) if patience <= iter: done_looping = True break end_time = time.clock() print_flush("... optimization complete with best validation score of %.20f on iteration %i" % (best_validation_loss, best_iter + 1)) print_flush("... the training code for file " + os.path.split(__file__)[1] + " ran for %.2fm" % \ ((end_time - start_time) / 60.))