コード例 #1
0
  public double test(double[] inputData) {
    if (min == max && min == 0) return 0;
    double[] tmp = new double[inputData.length];
    for (int i = 0; i < inputData.length; i++) {
      tmp[i] = inputData[i];
    }

    transformArray(tmp, min, max);

    double ans = bp.test(tmp)[0];

    return untransform(ans, min, max);
  }
コード例 #2
0
  public void train(int maxTimes, double errLimit, boolean flag) {
    if (min == max && min == 0) return;
    int times = 0;
    double err, oldErr = 1;

    do {
      err = 0;
      for (int i = 0; i < inputData.length; i++) {
        bp.train(inputData[i], outputData[i]);
        err = Math.max(err, bp.optErrSum);
      }

      times++;
      if (flag) {
        if (err > oldErr) bp.eta *= 0.7;
        else if (err * 1.04 < oldErr) bp.eta *= 1.05;
        // bp.eta *= oldErr / err;
      }

      oldErr = err;
    } while (err > errLimit && times < maxTimes);
  }