Java源码示例:org.neuroph.core.events.LearningEvent
示例1
@Override
public void learn(DataSet trainingSet) {
for (int phase = 0; phase < 2; phase++) {
for (int k = 0; k < iterations[phase]; k++) {
Iterator<DataSetRow> iterator = trainingSet.iterator();
while (iterator.hasNext() && !isStopped()) {
DataSetRow trainingSetRow = iterator.next();
learnPattern(trainingSetRow, nR[phase]);
} // while
currentIteration = k;
fireLearningEvent(new LearningEvent(this, LearningEvent.Type.EPOCH_ENDED));
if (isStopped()) return;
} // for k
learningRate = learningRate * 0.5;
} // for phase
}
示例2
@Override
public final void learn(DataSet trainingSet) {
setTrainingSet(trainingSet); // set this field here su subclasses can access it
onStart();
while (!isStopped()) {
beforeEpoch();
doLearningEpoch(trainingSet);
this.currentIteration++;
afterEpoch();
// now check if stop condition is satisfied
if (hasReachedStopCondition()) {
stopLearning();
} else if (!iterationsLimited && (currentIteration == Integer.MAX_VALUE)) {
// if counter has reached max value and iteration number is not limited restart iteration counter
this.currentIteration = 1;
}
// notify listeners that epoch has ended
fireLearningEvent(new LearningEvent(this, LearningEvent.Type.EPOCH_ENDED));
// Thread safe pause when learning is paused
if (this.pausedLearning) {
synchronized (this) {
while (this.pausedLearning) {
try {
this.wait();
} catch (Exception e) {
}
}
}
}
}
onStop();
fireLearningEvent(new LearningEvent(this, LearningEvent.Type.LEARNING_STOPPED));
}
示例3
/**
* Runs one learning iteration with the specified training set and fires
* event to notify observers. This method does the the doLearningEpoch() and in addtion
* notifes observrs when iteration is done.
*
* @param trainingSet training set to learn
*/
public void doOneLearningIteration(DataSet trainingSet) {
beforeEpoch();
doLearningEpoch(trainingSet);
afterEpoch();
// notify listeners
fireLearningEvent(new LearningEvent(this, LearningEvent.Type.LEARNING_STOPPED));
}
示例4
@Override
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation) event.getSource();
if (event.getEventType().equals(LearningEvent.Type.LEARNING_STOPPED)) {
double error = bp.getTotalNetworkError();
System.out.println("Training completed in " + bp.getCurrentIteration() + " iterations, ");
System.out.println("With total error: " + formatDecimalNumber(error));
} else {
System.out.println("Iteration: " + bp.getCurrentIteration() + " | Network error: " + bp.getTotalNetworkError());
}
}
示例5
@Override
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation) event.getSource();
if (event.getEventType().equals(LearningEvent.Type.LEARNING_STOPPED)) {
double error = bp.getTotalNetworkError();
System.out.println("Training completed in " + bp.getCurrentIteration() + " iterations, ");
System.out.println("With total error: " + formatDecimalNumber(error));
} else {
System.out.println("Iteration: " + bp.getCurrentIteration() + " | Network error: " + bp.getTotalNetworkError());
}
}
示例6
@Override
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation) event.getSource();
if (event.getEventType().equals(LearningEvent.Type.LEARNING_STOPPED)) {
double error = bp.getTotalNetworkError();
System.out.println("Training completed in " + bp.getCurrentIteration() + " iterations, ");
System.out.println("With total error: " + formatDecimalNumber(error));
} else {
System.out.println("Iteration: " + bp.getCurrentIteration() + " | Network error: " + bp.getTotalNetworkError());
}
}
示例7
@Override
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation) event.getSource();
if (event.getEventType().equals(LearningEvent.Type.LEARNING_STOPPED)) {
double error = bp.getTotalNetworkError();
System.out.println("Training completed in " + bp.getCurrentIteration() + " iterations, ");
System.out.println("With total error: " + formatDecimalNumber(error));
} else {
System.out.println("Iteration: " + bp.getCurrentIteration() + " | Network error: " + bp.getTotalNetworkError());
}
}
示例8
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation) event.getSource();
LOG.info("Epoch no#: [{}]. Error [{}]", bp.getCurrentIteration(), bp.getTotalNetworkError());
LOG.info("Epoch execution time: {} sec", (System.currentTimeMillis() - start) / 1000.0);
// neuralNetwork.save(bp.getCurrentIteration() + "_MNIST_CNN-MIC.nnet");
start = System.currentTimeMillis();
// if (bp.getCurrentIteration() % 5 == 0)
// Evaluation.runFullEvaluation(neuralNetwork, testSet);
}
示例9
@Override
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation) event.getSource();
if (event.getEventType().equals(LearningEvent.Type.LEARNING_STOPPED)) {
double error = bp.getTotalNetworkError();
System.out.println("Training completed in " + bp.getCurrentIteration() + " iterations, ");
System.out.println("With total error: " + formatDecimalNumber(error));
} else {
System.out.println("Iteration: " + bp.getCurrentIteration() + " | Network error: " + bp.getTotalNetworkError());
}
}
示例10
@Override
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation) event.getSource();
LOG.info("Current iteration: " + bp.getCurrentIteration());
LOG.info("Error: " + bp.getTotalNetworkError());
LOG.info("Calculation time: " + (System.currentTimeMillis() - start) / 1000.0);
// neuralNetwork.save(bp.getCurrentIteration() + "CNN_MNIST" + bp.getCurrentIteration() + ".nnet");
start = System.currentTimeMillis();
// NeuralNetworkEvaluationService.completeEvaluation(neuralNetwork, testSet);
}
示例11
@Override
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation) event.getSource();
if (event.getEventType().equals(LearningEvent.Type.LEARNING_STOPPED)) {
double error = bp.getTotalNetworkError();
System.out.println("Training completed in " + bp.getCurrentIteration() + " iterations, ");
System.out.println("With total error: " + formatDecimalNumber(error));
} else {
System.out.println("Iteration: " + bp.getCurrentIteration() + " | Network error: " + bp.getTotalNetworkError());
}
}
示例12
@Override
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation) event.getSource();
if (event.getEventType().equals(LearningEvent.Type.LEARNING_STOPPED)) {
double error = bp.getTotalNetworkError();
System.out.println("Training completed in " + bp.getCurrentIteration() + " iterations, ");
System.out.println("With total error: " + formatDecimalNumber(error));
} else {
System.out.println("Iteration: " + bp.getCurrentIteration() + " | Network error: " + bp.getTotalNetworkError());
}
}
示例13
public static void main(String args[]) {
//create training set from Data.DIGITS
DataSet dataSet = generateTrainingSet();
int inputCount = DigitData.CHAR_HEIGHT * DigitData.CHAR_WIDTH;
int outputCount = DigitData.DIGITS.length;
int hiddenNeurons = 19;
//create neural network
MultiLayerPerceptron neuralNet = new MultiLayerPerceptron(inputCount, hiddenNeurons, outputCount);
//get backpropagation learning rule from network
BackPropagation learningRule = neuralNet.getLearningRule();
learningRule.setLearningRate(0.5);
learningRule.setMaxError(0.001);
learningRule.setMaxIterations(5000);
//add learning listener in order to print out training info
learningRule.addListener(new LearningEventListener() {
@Override
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation) event.getSource();
if (event.getEventType().equals(LearningEvent.Type.LEARNING_STOPPED)) {
System.out.println();
System.out.println("Training completed in " + bp.getCurrentIteration() + " iterations");
System.out.println("With total error " + bp.getTotalNetworkError() + '\n');
} else {
System.out.println("Iteration: " + bp.getCurrentIteration() + " | Network error: " + bp.getTotalNetworkError());
}
}
});
//train neural network
neuralNet.learn(dataSet);
//train the network with training set
testNeuralNetwork(neuralNet, dataSet);
}
示例14
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation) event.getSource();
LOG.info("Epoch no#: [{}]. Error [{}]", bp.getCurrentIteration(), bp.getTotalNetworkError());
LOG.info("Epoch execution time: {} sec", (System.currentTimeMillis() - start) / 1000.0);
// neuralNetwork.save(bp.getCurrentIteration() + "_MNIST_CNN-MIC.nnet");
start = System.currentTimeMillis();
// if (bp.getCurrentIteration() % 5 == 0)
// Evaluation.runFullEvaluation(neuralNetwork, testSet);
}
示例15
protected synchronized void fireLearningEvent(LearningEvent evt) {
for (LearningEventListener listener : listeners) {
listener.handleLearningEvent(evt);
}
}
示例16
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation) event.getSource();
foldErrors[bp.getCurrentIteration() - 1] += bp.getTotalNetworkError() / foldSize;
}
示例17
public void handleLearningEvent(LearningEvent event) {
SupervisedLearning rule = (SupervisedLearning)event.getSource();
System.out.println( "Training, Network Epoch " + rule.getCurrentIteration() + ", Error:" + rule.getTotalNetworkError());
}
示例18
public void handleLearningEvent(LearningEvent event) {
SupervisedLearning rule = (SupervisedLearning)event.getSource();
System.out.println( "Training, Network Epoch " + rule.getCurrentIteration() + ", Error:" + rule.getTotalNetworkError());
}
示例19
@Override
public void handleLearningEvent(LearningEvent event) {
}
示例20
@Override
public void handleLearningEvent(LearningEvent le) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
示例21
@Override
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation)event.getSource();
if (event.getEventType() != LearningEvent.Type.LEARNING_STOPPED)
System.out.println(bp.getCurrentIteration() + ". iteration : "+ bp.getTotalNetworkError());
}
示例22
@Override
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation)event.getSource();
if (event.getEventType() != LearningEvent.Type.LEARNING_STOPPED)
System.out.println(bp.getCurrentIteration() + ". iteration : "+ bp.getTotalNetworkError());
}
示例23
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation)event.getSource();
System.out.println(bp.getCurrentIteration() + ". iteration : "+ bp.getTotalNetworkError());
}
示例24
@Override
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation) event.getSource();
System.out.println(bp.getCurrentIteration() + ". iteration | Total network error: " + bp.getTotalNetworkError());
}
示例25
@Override
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation) event.getSource();
System.out.println(bp.getCurrentIteration() + ". iteration | Total network error: " + bp.getTotalNetworkError());
}
示例26
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation) event.getSource();
System.out.println(bp.getCurrentIteration() + ". iteration | Total network error: " + bp.getTotalNetworkError());
}
示例27
@Override
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation) event.getSource();
System.out.println(bp.getCurrentIteration() + ". iteration | Total network error: " + bp.getTotalNetworkError());
}
示例28
@Override
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation) event.getSource();
System.out.println(bp.getCurrentIteration() + ". iteration | Total network error: " + bp.getTotalNetworkError());
}
示例29
@Override
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation) event.getSource();
System.out.println(bp.getCurrentIteration() + ". iteration | Total network error: " + bp.getTotalNetworkError());
}
示例30
public void handleLearningEvent(LearningEvent event) {
BackPropagation bp = (BackPropagation) event.getSource();
System.out.println(bp.getCurrentIteration() + ". iteration | Total network error: " + bp.getTotalNetworkError());
}