C# Encog框架,神经网络,为什么我在训练网络时会遇到内部错误?

我正在按照《使用Encog C#》这本书中的指示进行操作,其中我不得不重新设计了一些代码以适应我的需求。

我正在处理图像数据集,每次将一个“类别”加载到网络中,训练它,保存它,然后在控制台程序中继续处理下一个“类别”。

这是我创建神经网络的方式:

  public BasicNetwork CreateNetwork(ImageMLDataSet training)    {        var network = EncogUtility.SimpleFeedForward(training.InputSize, 100, 0, training.IdealSize, true);        return network;    }

以及我的训练集:imageDict是一个字典变量

 public ImageMLDataSet CreateTraining()    {        var downsample = new RGBDownsample();        var training = new ImageMLDataSet(downsample, false, -1, 1);        foreach (var item in imageDict)        {            ImageMLData data = new ImageMLData(item.Value);            training.Add(data);        }        Console.WriteLine("训练集已创建");        return training;    }

在此之后,我使用’ImagePair’为我的图像分配ID(在我的情况下使用的是字典而不是类),并将其处理为ImageMLData。

错误发生在这个方法中,当调用’EncogUtility.TrainConsole(train, network, training, minutes);’时。

public void TrainNetwork(BasicNetwork network, IMLDataSet training)    {        float minutes = 1;        double strategyError = 0.25;        int strategyCycles = 50;        Console.WriteLine("训练开始...");        var train = new ResilientPropagation(network, training);        try        {                            train.AddStrategy(new ResetStrategy(strategyError, strategyCycles));            EncogUtility.TrainConsole(train, network, training, minutes);        }        catch(Exception e)        {            Console.WriteLine("错误发生在: " + e);        }        Console.WriteLine("训练停止");    }

当我运行这个程序时,我捕获到了以下异常:

错误发生在: Encog.EncogError: 嵌套异常 —> System.NullReferenceException: 对象引用未设置为对象的实例 在 Encog.MathUtil.Error.ErrorCalculation.UpdateError(Double[] actual, IMLData ideal, Double significance) ved Encog.Neural.Networks.Training.Propagation.GradientWorker.Process(IMLDataPair pair) at Encog.Neural.Networks.Training.Propagation.GradientWorker.Run() — 内部异常的堆栈跟踪结束 — at Encog.Neural.Networks.Training.Propagation.Propagation.Iteration()
at Encog.Util.Simple.EncogUtility.TrainConsole(IMLTrain train, BasicNetwork network, IMLDataSet trainingSet, Double seconds) at TreeSorting.NeuralNetwork.TrainNetwork(BasicNetwork network, IMLDataSet training) in C:\Dokumenter\Monosoft\Monosoft Project\ConsoleApp1\NeuralNetwork.cs:line 180

提前感谢 🙂


回答:

对于正在寻找此类问题解决方案的其他人:

我通过更改声明新变量时的’var’解决了这个问题,这似乎解决了我的问题。感谢@某人的回答解决了这个问题 c:

Related Posts

为什么我们在K-means聚类方法中使用kmeans.fit函数?

我在一个视频中使用K-means聚类技术,但我不明白为…

如何获取Keras中ImageDataGenerator的.flow_from_directory函数扫描的类名?

我想制作一个用户友好的GUI图像分类器,用户只需指向数…

如何查看每个词的tf-idf得分

我试图了解文档中每个词的tf-idf得分。然而,它只返…

如何修复 ‘ValueError: Found input variables with inconsistent numbers of samples: [32979, 21602]’?

我在制作一个用于情感分析的逻辑回归模型时遇到了这个问题…

如何向神经网络输入两个不同大小的输入?

我想向神经网络输入两个数据集。第一个数据集(元素)具有…

逻辑回归与机器学习有何关联

我们正在开会讨论聘请一位我们信任的顾问来做机器学习。一…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注