经过调试发现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() ;
本文详细阐述了在使用Neuroph框架进行神经网络训练时遇到NullPointerException问题的原因分析,包括自定义的学习规则类中beforeEpoch方法未正确初始化导致的错误。文章提供了解决方案,通过继承BackPropagation类并重写beforeEpoch方法来确保学习过程的正常运行。同时,强调了在MyLearningRule类中设置训练集的重要性,并提供了完整代码示例供参考。

396

被折叠的 条评论
为什么被折叠?



