/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
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.ResilientPropagation;

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

    /**
     * Create instance of a training using predefined neural network and given
     * settings
     *
     * @param neuralNet
     * @param dataset
     * @param settings
     */
    public ResilientTraining(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 ResilientTraining(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() {
        ResilientPropagation rp = (ResilientPropagation) setParameters();
        getNeuralNet().setLearningRule(rp);
        getNeuralNet().learn(getDataset());
        this.getStats().addData(new TrainingResult(rp.getCurrentIteration(), rp.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() {
        ResilientPropagation rp = new ResilientPropagation();
        rp.setBatchMode(getSettings().isBatchMode());
        rp.setMaxError(getSettings().getMaxError());
        rp.setMaxIterations(getSettings().getMaxIterations());
        rp.setDecreaseFactor(getSettings().getDecreaseFactor());
        rp.setIncreaseFactor(getSettings().getIncreaseFactor());
        rp.setInitialDelta(getSettings().getInitialDelta());
        rp.setMaxDelta(getSettings().getMaxDelta());
        rp.setMinDelta(getSettings().getMinDelta());
        return rp;
    }

}

 

Ads help maintain this website.