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近邻算法时,有没有办法获取被使用的“邻居”?

我想找到一种方法来确定在我的knn算法中实际使用了哪些…

Theano在Google Colab上无法启用GPU支持

我在尝试使用Theano库训练一个模型。由于我的电脑内…

准确性评分似乎有误

这里是代码: from sklearn.metrics…

Keras Functional API: “错误检查输入时:期望input_1具有4个维度,但得到形状为(X, Y)的数组”

我在尝试使用Keras的fit_generator来训…

如何使用sklearn.datasets.make_classification在指定范围内生成合成数据?

我想为分类问题创建合成数据。我使用了sklearn.d…

如何处理预测时不在训练集中的标签

已关闭。 此问题与编程或软件开发无关。目前不接受回答。…

发表回复

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