package org.neuroph.contrib.bpbench;

import org.neuroph.core.NeuralNetwork;
import org.neuroph.core.data.DataSet;
import org.neuroph.core.learning.LearningRule;
import org.neuroph.nnet.learning.QuickPropagation;

/**
 * Class that set up neural network with quickpropagation learning rule and
 * predefined settings
 *
 * @author Mladen Savic 
 */
public class QuickpropagationTraining extends AbstractTraining {

    /**
     * Create instance of a training using predefined neural network and given
     * settings
     *
     * @param neuralNet
     * @param dataset
     * @param settings
     */
    public QuickpropagationTraining(NeuralNetwork neuralNet, DataSet dataset, TrainingSettings settings) {
        super(neuralNet, dataset, settings);
    }

    /**
     * Create instance of a training using given settings and create neural
     * network from that settings
     *
     * @param dataset
     * @param settings
     */
    public QuickpropagationTraining(DataSet dataset, TrainingSettings settings) {
        super(dataset, settings);
    }

    /**
     * Method that set up learning rule with given settings, learns dataset and
     * creates statistics from results of the test
     */
    @Override
    public void testNeuralNet() {
        QuickPropagation qp = (QuickPropagation) setParameters();
        getNeuralNet().setLearningRule(qp);
        getNeuralNet().learn(getDataset());
        this.getStats().addData(new TrainingResult(qp.getCurrentIteration(), qp.getTotalNetworkError(), createMatrix()));
        this.getStats().calculateParameters();

    }

    /**
     * Create instance of learning rule and setup given parameters
     *
     * @return returns learning rule with predefined parameters
     */
    @Override
    public LearningRule setParameters() {
        QuickPropagation qp = new QuickPropagation();
        qp.setBatchMode(true);
        qp.setLearningRate(getSettings().getLearningRate());
        qp.setMaxError(getSettings().getLearningRate());
        qp.setMaxIterations(getSettings().getMaxIterations());
        return qp;
    }

}

 

Ads help maintain this website.