code: @Override protected double[] score0(double[] data, double[] preds) {
      //allocate a big enough array for the model to be able to score with mini_batch
      float[] f = new float[_parms._mini_batch_size * data.length];
      for (int i=0; i<data.length; ++i) f[i] = (float)data[i]; //only fill the first observation
      //float[] predFloats = model_info().predict(f);
      float[] predFloats = model_info._backend.predict(model_info.getModel().get(), f);
      if (_output.nclasses()>=2) {
        for (int i = 1; i < _output.nclasses()+1; ++i) preds[i] = predFloats[i];
      } else {
        preds[0] = predFloats[0];
      }
      return preds;
    }
docs: Single-instance scoring - slow, not optimized for mini-batches - do not use unless you know what you're doing
  @param data One single observation unrolled into a double[], with a length equal to the number of input neurons
  @param preds Array to store the predictions in (nclasses+1)
  @return vector of [0, p0, p1, p2, etc.]