我正在学习如何使用用于java的encog库。我正在尝试创建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));下面是我的代码片段(创建和培训部分),非常感谢您的每一个回答。
发布于 2016-11-30 16:02:06
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次。
https://stackoverflow.com/questions/39963897
复制相似问题