У меня ошибка при передаче массива «Input» в нейронную сеть для обучения.Мне нужно научить нейронную сеть массиву, в котором разное количество столбцов в некоторых строках.Я назначаю количество нейронов максимальному значению строки массива.Я использую библиотеку Encog.Можно ли сделать это?Пожалуйста, помогите, потому что я новичок в этом.
Я пытался уменьшить количество нейронов в нейронной сети, но некоторые данные из массива не использовались.Я попытался найти некоторую информацию об этом, но безуспешно.
//array with data for training
public static double[][] INPUT = {
{1.0, 8.0, 13.0, 0,0, 12.0, 6.0, 17.0, 24.0, 440.0, 6.0, 0.0, 19.0,96.0},
{1.0, 0,0, 0.0, 4.0, 52.0, 6.0, 0.0, 5.0, 6.0, 7.0, 150.0, 5.0, 1.0},
{0.0, 0.0, 0.0, 0.0, 0.0, 413.0, 0.0, 117.0, 0.0, 0.0, 0.0},
{1.0, 1.0, 1.0, 7.0, 0.0, 3.0, 7.0, 167.0, 1.0, 7.0, 0.0, 1.0, 44.0},
{0.0, 1.0, 5.0, 5.0, 5.0, 6.0, 0.0, 4.0, 186.0, 13.0, 0.0, 1.0}
};
//ideal data for neural network
public static double[][] IDEAL = {{0.9, 0.1}, {0.3, 0.7}, {0.2, 0.8},
{1.0, 0.0}, {0.4, 0.6}};
Здесь структура нейронной сети
BasicNetwork network = new BasicNetwork();
network.addLayer(new BasicLayer(null, true, 13));
network.addLayer(new BasicLayer(new ActivationSigmoid(), true, 9));
network.addLayer(new BasicLayer(new ActivationSigmoid(), true, 2));
network.getStructure().finalizeStructure();
network.reset();
MLDataSet trainSet = new BasicMLDataSet(INPUT, IDEAL);
MLTrain train = new ResilientPropagation(network, trainSet);
int epoch = 1;
do {
train.iteration();
System.out.println("Epoch #" + epoch + " Error:" +
train.getError());
epoch++;
} while (train.getError() > 0.01);
train.finishTraining();