С созданием вашей сети все в порядке, хотя рекомендуется, чтобы количество нейронов в скрытом слое было как минимум наполовину, и вы, скорее всего, увидите более высокую точность при этом (Bayramet et al., 2013).
Отрицательные значения часто могут быть причиной неточной сети, вы можете увидеть среднеквадратическую ошибку (MSe) при обучении сети, хороший способ убедиться, что вы получаете наименьшую ошибку:
//Train network on data set, parameters (Network, dataset, learning rate, momentum).
IMLTrain learner = new Backpropagation(EncogNetwork, data, lr, mom);
double lastError = double.PositiveInfinity;
//Training loop while error is decreasing by 0.0000001 or more every 1000 iterations.
do
{
//Set last error as error if the network has trained before.
if (learner.Error != 0)
{
lastError = learner.Error;
}
//Do 1000 learning iterations.
int i = 0;
while (i < 1000)
{
learner.Iteration();
i++;
}
} while (lastError - learner.Error > 0.0000001);
double error = learner.Error;
Вероятно, ошибка в тех, то есть 1.2 приведет к плохим результатам.Вам также следует поэкспериментировать со скоростью обучения и импульсом, чтобы помочь достичь низкой ошибки.
При вычислениях легко получить отрицательные результаты, если вы вводите плохие или несвязанные значения.Это все, что я могу сказать по количеству предоставленной вами информации.