code: public <T extends IEvaluation> T[] doEvaluation(JavaRDD<DataSet> data, int evalNumWorkers, int evalBatchSize, T... emptyEvaluations) {
          IEvaluateFlatMapFunction<T> evalFn = new IEvaluateFlatMapFunction<>(true, sc.broadcast(conf.toJson()),
                  SparkUtils.asByteArrayBroadcast(sc, network.params()), evalNumWorkers, evalBatchSize, emptyEvaluations);
          JavaRDD<T[]> evaluations = data.mapPartitions(evalFn);
          return evaluations.treeAggregate(null, new IEvaluateAggregateFunction<T>(),
                          new IEvaluateAggregateFunction<T>());
      }
docs: Perform distributed evaluation on a <i>single output</i> ComputationGraph form DataSet objects using Spark.
  Can be used to perform multiple evaluations on this single output (for example, {@link Evaluation} and
  {@link ROC}) at the same time.<br>
  
  @param data             Data to evaluatie
  @param evalNumWorkers   Number of worker threads (per machine) to use for evaluation. May want tis to be less than
  the number of Spark threads per machine/JVM to reduce memory requirements
  @param evalBatchSize    Minibatch size for evaluation
  @param emptyEvaluations Evaluations to perform
  @return                 Evaluations