我按照《 Use Encog c#》一书中的说明进行操作,在那里我不得不重新设计一些代码以满足我的需要。

我正在使用图像数据集,我一次将一个“类别”加载到网络中,对其进行训练,保存并在控制台程序中继续进行下一个“类别”。

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

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

        return network;
    }


和我的训练集:
imageDict是一个Dictionary变量

 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("Training set created");

        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("Training initiated...");
        var train = new ResilientPropagation(network, training);

        try
        {
            train.AddStrategy(new ResetStrategy(strategyError, strategyCycles));

            EncogUtility.TrainConsole(train, network, training, minutes);
        }
        catch(Exception e)
        {
            Console.WriteLine("Error at: " + e);
        }

        Console.WriteLine("Training stopped");

    }


运行此命令时,我捕获到异常:


  错误出现在:Encog.EncogError:嵌套异常--->
  System.NullReferenceException:对象引用未设置为
  位于的对象的实例
  Encog.MathUtil.Error.ErrorCalculation.UpdateError(Double []实际,
  IMLData理想,双重意义)
  Encog.Neural.Networks.Training.Propagation.GradientWorker.Process(IMLDataPair
  对)
  Encog.Neural.Networks.Training.Propagation.GradientWorker.Run()-
  荡妇偷偷摸摸地走了
  Encog.Neural.Networks.Training.Propagation.Propagation.Iteration()
  在Encog.Util.Simple.EncogUtility.TrainConsole(IMLTrain火车,
  BasicNetwork网络,IMLDataSet trainingSet(双秒)位于
  TreeSorting.NeuralNetwork.TrainNetwork(基本网络,
  IMLDataSet培训)在C:\ Dokumenter \ Monosoft \ Monosoft中
  Project \ ConsoleApp1 \ NeuralNetwork.cs:第180行


提前致谢 :)

最佳答案

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

我通过在声明新变量时更改'var'来解决此问题,这似乎解决了我的问题。
感谢GunnarSigfusson修复它的答案c:

10-08 19:33