class_docstr: Object which carries out genetic search and returns top performing model
  upon completion.
code: def _evaluate(self, genome, epochs):
      model = self.genome_handler.decode(genome)
      loss, accuracy = None, None
      fit_params = {
          "x": self.x_train,
          "y": self.y_train,
          "validation_split": 0.1,
          "epochs": epochs,
          "verbose": 1,
          "callbacks": [
              EarlyStopping(monitor="val_loss", patience=1, verbose=1)
          ],
      }
  
      if self.x_val is not None:
          fit_params["validation_data"] = (self.x_val, self.y_val)
      try:
          model.fit(**fit_params)
          loss, accuracy = model.evaluate(
              self.x_test, self.y_test, verbose=0
          )
      except Exception as e:
          loss, accuracy = self._handle_broken_model(model, e)
  
      self._record_stats(model, genome, loss, accuracy)
  
      return model, loss, accuracy
  
imports: from __future__ import print_function
  import random
  import csv
  import operator
  import gc
  import os
  from datetime import datetime
  from keras.callbacks import EarlyStopping
  from keras.models import load_model
  import keras.backend
  from sklearn.metrics import log_loss
  import numpy
label_desc: Use image node_id 5 for calling the DEvol obj's underlying member method code with example usage: obj._evaluate(genome, epochs) and returns: model,  loss,  accuracy