code: private RowData reconstructedToRowData(double[] reconstructed) {
      RowData rd = new RowData();
      int pos = 0;
      for (int i = 0; i < m.nfeatures(); i++) {
        Object value;
        if (m._domains[i] == null) {
          value = reconstructed[pos++];
        } else {
          value = catValuesAsMap(m._domains[i], reconstructed, pos);
          pos += m._domains[i].length + 1;
        }
        rd.put(m._names[i], value);
      }
      return rd;
    }
docs: Converts output of AutoEncoder to a RowData structure. Categorical fields are represented by
  a map of domain values -> reconstructed values, missing domain value is represented by a 'null' key
  @param reconstructed raw output of AutoEncoder
  @return reconstructed RowData structure