Обучение ENGG RBF
Я учусь работать с библиотекой Encog для Java. Я пытаюсь создать сеть RBF для функции приближения. Я использую метод SVDTraining, но ошибка сети не уменьшается. Он остается на том же уровне, что и в начале обучения. И я не знаю почему.
MLDataSet trainingSet = new BasicMLDataSet(trainData);
MLDataSet testingSet = new BasicMLDataSet(testData);
RadialBasisFunction fnc[] = {new GaussianFunction(1)};
RBFNetwork rbf= new RBFNetwork(1,1,fnc);
//Create the training set and train.
MLTrain train = new SVDTraining(rbf, trainingSet);
int epoch = 1;
File f = new File("Error.csv");
PrintWriter pw = new PrintWriter(f);
StringBuilder sb = new StringBuilder();
do {
train.iteration();
System.out.println(rbf.getRBF().length+";"+rbf.getInputCount()+";"+rbf.getOutputCount());
System.out.println("Epoch #" + epoch + " Error:" + train.getError());
epoch++;
String x = String.valueOf(epoch).replace(".", ",");
String y = String.valueOf(train.getError()).replace(".", ",");
sb.append(x);
sb.append(';');
sb.append(y);
sb.append('\n');
} while((train.getError() > MAX_ERROR)&&(epoch < ITERATIONS));
Вот фрагмент моего кода (часть, посвященная созданию и обучению). Большое спасибо за каждый ответ.
1 ответ
SVD это один шаг решить.
//SVD is a single step solve
int epoch = 1;
do
{
train.iteration();
System.out.println("Epoch #" + epoch + " Error:" + train.getError());
epoch++;
} while ((epoch < 1) && (train.getError() > 0.001));
Это будет повторяться только 1 раз.