Размер ввода обучающих данных Encog равен 0, но рассчитанный размер ввода равен 5 - PullRequest
0 голосов
/ 14 ноября 2018

Как следует из названия, я получаю сообщение об ошибке «Метод машинного обучения имеет длину ввода 5, но данные обучения имеют значение 0. Они должны быть одинаковыми».потому что мой размер ввода равен 0 для обучающих данных, а рассчитанный размер ввода равен 5 (это правильно).Код, используемый для чтения CSV-файла и сохранения его в виде набора данных:

        //Get file path.
        var path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
        path = path.Replace("file:\\", "");
        IVersatileDataSource source = new CSVDataSource(path + @"\enpcsv.csv", false, CSVFormat.DecimalPoint);

        //Setup training dataset.
        var data = new VersatileMLDataSet(source);
        data.DefineSourceColumn("A", 0, ColumnType.Continuous);
        data.DefineSourceColumn("B", 1, ColumnType.Continuous);
        data.DefineSourceColumn("C", 2, ColumnType.Continuous);
        data.DefineSourceColumn("D", 3, ColumnType.Continuous);
        data.DefineSourceColumn("E", 4, ColumnType.Continuous);
        ColumnDefinition outputColumn = data.DefineSourceColumn("F", 5, ColumnType.Nominal);

        data.Analyze();
        data.DefineSingleOutputOthersInput(outputColumn);

        data.Normalize();

        //Setup network
        BasicNetwork network = new BasicNetwork();
        network.AddLayer(new BasicLayer(null, true, 5)); //Input.
        network.AddLayer(new BasicLayer(new ActivationSigmoid(), true, 10)); //Hidden.
        network.AddLayer(new BasicLayer(new ActivationSigmoid(), false, 1)); //Output.
        network.Structure.FinalizeStructure();
        network.Reset();

        //Train.
        IMLTrain learner = new Backpropagation(network, data);

Другой момент может заключаться в том, что аналогично входному размеру идеальный размер равен 0, но вычисленный идеальный размер равен 6, что не должнослучай, как я поставил один идеал.Я видел одно решение этой проблемы, когда они сохраняют набор данных в виде csv, а затем снова читают его: Encog: «Метод машинного обучения имеет длину ввода 7, но обучение имеет ошибку 0» Это кажется плохой практикой, поэтому я смотрю, если кто-то знает другое решение или может вызвать ошибку в моем коде, спасибо за ваше время.

...