def continue_finetuning(self, epochs, binary_output=False):
        """
        Continue finetuning. This will only run if the finetuning has already run.

        @param epochs: Number of epochs to run the finetuning.
        @param binary_output: If the DBN must output binary values.
        """

        self.weight_matrices = load_dbn_weights()
        self.load_finetuning_output_txt()
        self.print_output('Fine Tuning (continued)')
        timer = time()
        fine_tuning = FineTuning(self.weight_matrices,
                                 self.batches,
                                 self.print_output,
                                 binary_output=binary_output)

        fine_tuning.run_finetuning(epochs)

        fine_tuning_error_train = fine_tuning.train_error
        fine_tuning_error_test = fine_tuning.test_error

        self.print_output('Time ' + str(time() - timer))
        save_dbn(fine_tuning.weight_matrices_added_biases,
                 fine_tuning_error_train, fine_tuning_error_test)
        self.output_dbn_errors(fine_tuning_error_train, fine_tuning_error_test)
        self.save_output()
    def run_finetuning(self, load_from_serialization=False):
        """
        Run the finetuning of the DBN. This will only run if the pretraining has been run.

        @param load_from_serialization: If the weight matrices are not loaded into memory, this should be True.
        """
        try:
            if load_from_serialization:
                self.weight_matrices, self.hidden_biases, self.visible_biases = load_rbm_weights(
                )
        except IOError:
            print 'Please run pretraining before executing finetuning.'
            return

        self.print_output('Fine Tuning')
        timer = time()

        fine_tuning = FineTuning(self.weight_matrices,
                                 self.batches,
                                 self.print_output,
                                 self.hidden_biases,
                                 self.visible_biases,
                                 binary_output=self.binary_output)
        fine_tuning.run_finetuning(self.max_epochs)

        fine_tuning_error_train = fine_tuning.train_error
        fine_tuning_error_test = fine_tuning.test_error

        self.print_output('Time ' + str(time() - timer))
        save_dbn(fine_tuning.weight_matrices_added_biases,
                 fine_tuning_error_train, fine_tuning_error_test)
        self.output_dbn_errors(fine_tuning_error_train, fine_tuning_error_test)
        self.save_output()
    def run_finetuning(self, load_from_serialization = False):
        """
        Run the finetuning of the DBN. This will only run if the pretraining has been run.

        @param load_from_serialization: If the weight matrices are not loaded into memory, this should be True.
        """
        try:
            if load_from_serialization:
                self.weight_matrices,self.hidden_biases,self.visible_biases = load_rbm_weights()
        except IOError:
            print 'Please run pretraining before executing finetuning.'
            return

        self.print_output('Fine Tuning')
        timer = time()

        fine_tuning = FineTuning(self.weight_matrices, self.batches,self.print_output,self.increment_progress,
                                 self.hidden_biases,self.visible_biases,binary_output = self.binary_output)
        fine_tuning.run_finetuning(self.max_epochs)
        
        fine_tuning_error_train = fine_tuning.train_error
        fine_tuning_error_test = fine_tuning.test_error
        if self.plot:
            self.plot_finetuning_error(fine_tuning_error_train, fine_tuning_error_test)

        self.print_output('Time '+str(time()-timer))
        save_dbn(fine_tuning.weight_matrices_added_biases,fine_tuning_error_train,fine_tuning_error_test)
        self.output_dbn_errors(fine_tuning_error_train,fine_tuning_error_test)
        self.save_output()
    def continue_finetuning(self,epochs,binary_output = False):
        """
        Continue finetuning. This will only run if the finetuning has already run.

        @param epochs: Number of epochs to run the finetuning.
        @param binary_output: If the DBN must output binary values.
        """

        self.weight_matrices = load_dbn_weights()
        self.load_finetuning_output_txt()
        self.print_output('Fine Tuning (continued)')
        timer = time()
        fine_tuning = FineTuning(self.weight_matrices, self.batches,self.print_output,self.increment_progress,binary_output = binary_output)
        
        fine_tuning.run_finetuning(epochs)
        
        fine_tuning_error_train = fine_tuning.train_error
        fine_tuning_error_test = fine_tuning.test_error
        
        self.print_output('Time '+str(time()-timer))
        save_dbn(fine_tuning.weight_matrices_added_biases,fine_tuning_error_train,fine_tuning_error_test)
        self.output_dbn_errors(fine_tuning_error_train,fine_tuning_error_test)
        self.save_output()