code: @Override
    public final double[] score0(double[] dataRow, double offset, double[] preds) {
      assert(dataRow != null) : "doubles are null"; // check to make sure data is not null
      double[] neuronsInput = new double[_units[0]]; // store inputs into the neural network
      double[] neuronsOutput;  // save output from a neural network layer
  
      // transform inputs: NAs in categoricals are always set to new extra level.
      setInput(dataRow, neuronsInput, _numsA, _catsA, _nums, _cats, _catoffsets, _normmul, _normsub, _use_all_factor_levels, true);
  
      // proprogate inputs through neural network
      for (int layer=0; layer < _numLayers; layer++) {
        NeuralNetwork oneLayer = new NeuralNetwork(_allActivations[layer], _all_drop_out_ratios[layer],
                _weightsAndBias[layer], neuronsInput, _units[layer + 1]);
        neuronsOutput = oneLayer.fprop1Layer();
        neuronsInput = neuronsOutput;
      }
      if (!this.isAutoEncoder())
        assert (_nclasses == neuronsInput.length) : "nclasses " + _nclasses + " neuronsOutput.length " + neuronsInput.length;
      // Correction for classification or standardize outputs
      return modifyOutputs(neuronsInput, preds, dataRow);
    }
docs: *
  This method will be derived from the scoring/prediction function of deeplearning model itself.  However,
  we followed closely what is being done in deepwater mojo.  The variable offset is not used.
  @param dataRow
  @param offset
  @param preds
  @return