经过调试发现Neuroph 有问题,有问题,自己用代码训练NullPointerException,beforeEpoch
经过调试发现Neuroph有问题,自己用代码训练NullPointerException,beforeEpoch
BackPropagation dp = new BackPropagation();
dp.setNeuralNetwork(neuralNetwork);
neuralNetwork.setLearningRule(dp);
dp.doOneLearningIteration(trainingSet);---》内部机制问题
Exception in thread"main" java.lang.NullPointerException
atorg.neuroph.core.learning.SupervisedLearning.beforeEpoch(SupervisedLearning.java:142)
atorg.neuroph.core.learning.IterativeLearning.doOneLearningIteration(IterativeLearning.java:242)
atGoodTrainingAI.traintest(GoodTrainingAI.java:49)
atGoodTrainingAI.main(GoodTrainingAI.java:20)
自定义beforeEpoch里面没有调用onstart,导致ErrorFunction没有初始化
也没有setDataSet
只能自己继承Backpropagation,在重写BeforeEpoch(){ 调用super.onStart(),super.beforeEpoch()},
注意在MyLearningRule dp调用之前,需要dp.setDataSet(dataSet);
MyLearningRule.java
public class MyLearningRule extends BackPropagation {
protected void beforeEpoch() {
// TODO Auto-generatedmethod stub
super.onStart();
super.beforeEpoch();
}
}
Main.java调用
BackPropagation dp = new BackPropagation();
//MyLearningRuledp = new MyLearningRule();
dp.setTrainingSet(trainingSet);
dp.setLearningRate(0.5);
dp.setNeuralNetwork(neuralNetwork);
neuralNetwork.setLearningRule(dp);
intepoch = 1 ;
doubletotalNetError = 1;
do
{
dp.doOneLearningIteration(trainingSet);
totalNetError= dp.getTotalNetworkError() ;
BackPropagation dp = new BackPropagation();
dp.setNeuralNetwork(neuralNetwork);
neuralNetwork.setLearningRule(dp);
dp.doOneLearningIteration(trainingSet);---》内部机制问题
Exception in thread"main" java.lang.NullPointerException
atorg.neuroph.core.learning.SupervisedLearning.beforeEpoch(SupervisedLearning.java:142)
atorg.neuroph.core.learning.IterativeLearning.doOneLearningIteration(IterativeLearning.java:242)
atGoodTrainingAI.traintest(GoodTrainingAI.java:49)
atGoodTrainingAI.main(GoodTrainingAI.java:20)
自定义beforeEpoch里面没有调用onstart,导致ErrorFunction没有初始化
也没有setDataSet
只能自己继承Backpropagation,在重写BeforeEpoch(){ 调用super.onStart(),super.beforeEpoch()},
注意在MyLearningRule dp调用之前,需要dp.setDataSet(dataSet);
MyLearningRule.java
public class MyLearningRule extends BackPropagation {
protected void beforeEpoch() {
// TODO Auto-generatedmethod stub
super.onStart();
super.beforeEpoch();
}
}
Main.java调用
BackPropagation dp = new BackPropagation();
//MyLearningRuledp = new MyLearningRule();
dp.setTrainingSet(trainingSet);
dp.setLearningRate(0.5);
dp.setNeuralNetwork(neuralNetwork);
neuralNetwork.setLearningRule(dp);
intepoch = 1 ;
doubletotalNetError = 1;
do
{
dp.doOneLearningIteration(trainingSet);
totalNetError= dp.getTotalNetworkError() ;