Commit 03351e0b authored by Bharath Ramsundar's avatar Bharath Ramsundar
Browse files

Debugging

parent cf154554
Loading
Loading
Loading
Loading
+12 −10
Original line number Diff line number Diff line
@@ -164,15 +164,12 @@ def normalize_prediction_shape(y, mode="classification", n_classes=None):
        y_hot = to_one_hot(y, n_classes=n_classes)
        # Insert task dimension
        y_out = np.expand_dims(y_hot, 1)
        return y_out
      elif len(y.shape) == 2:
        # Insert a task dimension
        n_tasks = 1
        y_out = np.expand_dims(y, 1)
        return y_out
      elif len(y.shape) == 3:
        y_out = y
        return y_out
      else:
        raise ValueError("y must be an array of dimension 1, 2, or 3 for classification problems.")
    else:
@@ -182,25 +179,30 @@ def normalize_prediction_shape(y, mode="classification", n_classes=None):
      y = np.reshape(y, (1,))
      y = to_one_hot(y, n_classes=n_classes)
      y_out = np.expand_dims(y, 1)
      return y_out
  elif mode == "regression":
    if isinstance(y, np.ndarray):
      if len(y.shape) == 1:
        # Insert a task dimension
        n_tasks = 1
        y_out = np.expand_dims(y, 1)
        return y_out
      elif len(y.shape) == 2:
        y_out = y
        return y_out
      elif len(y.shape) == 3:
        if y[-1] != 1:
          raise ValueError("y must be of shape `(N,)` or `(N, n_tasks)` or `(N, n_tasks, 1)` for regression problems.")
        if y.shape[-1] != 1:
          raise ValueError("y must a float sclar or a ndarray of shape `(N,)` or `(N, n_tasks)` or `(N, n_tasks, 1)` for regression problems.")
        y_out = np.squeeze(y, axis=-1)
      else:
        raise ValueError("y must be of shape `(N,)` or `(N, n_tasks)` or `(N, n_tasks, 1)` for regression problems.")
        raise ValueError("y must a float sclar or a ndarray of shape `(N,)` or `(N, n_tasks)` or `(N, n_tasks, 1)` for regression problems.")
    else:
      # In this clase, y is a scalar.
      try:
        y = float(y)
      except TypeError:
        #################
        print("y")
        print(y)
        #################
        raise ValueError("y must a float sclar or a ndarray of shape `(N,)` or `(N, n_tasks)` or `(N, n_tasks, 1)` for regression problems.")
      y = np.array(y)
      y_out = np.reshape(y, (1, 1))
  return y_out
+7 −7
Original line number Diff line number Diff line
@@ -156,13 +156,13 @@ class Evaluator(object):
    else:
      mode = metrics[0].mode
    y_pred = self.model.predict(self.dataset, self.output_transformers)
    ########################################
    print("y.shape")
    print(y.shape)
    print("y_pred.shape")
    print(y_pred.shape)
    assert 0 == 1
    ########################################
    #########################################
    #print("y.shape")
    #print(y.shape)
    #print("y_pred.shape")
    #print(y_pred.shape)
    #assert 0 == 1
    #########################################
    if mode == "classification":
      y_pred_print = np.argmax(y_pred, -1)
    else:
+15 −15
Original line number Diff line number Diff line
@@ -21,21 +21,21 @@ class TestEvaluator(unittest.TestCase):
    assert len(multitask_scores) == 1
    assert multitask_scores['mae_score'] > 0

#  def test_generator_evaluator_dc_metric_multitask(self):
#    """Test generator evaluator on a dataset."""
#    X = np.random.rand(10, 5)
#    y = np.random.rand(10, 3)
#    dataset = dc.data.NumpyDataset(X, y)
#    model = dc.models.MultitaskRegressor(1, 5)
#    generator = model.default_generator(dataset, pad_batches=False)
#    transformers = []
#    evaluator = GeneratorEvaluator(model, generator, transformers)
#    metric = dc.metrics.Metric(dc.metrics.mae_score)
#    multitask_scores = evaluator.compute_model_performance([metric])
#    assert isinstance(multitask_scores, dict)
#    assert len(multitask_scores) == 1
#    assert multitask_scores['mae_score'] > 0
#
  def test_generator_evaluator_dc_metric_multitask(self):
    """Test generator evaluator on a dataset."""
    X = np.random.rand(10, 5)
    y = np.random.rand(10, 3)
    dataset = dc.data.NumpyDataset(X, y)
    model = dc.models.MultitaskRegressor(1, 5)
    generator = model.default_generator(dataset, pad_batches=False)
    transformers = []
    evaluator = GeneratorEvaluator(model, generator, transformers)
    metric = dc.metrics.Metric(dc.metrics.mae_score)
    multitask_scores = evaluator.compute_model_performance([metric])
    assert isinstance(multitask_scores, dict)
    assert len(multitask_scores) == 1
    assert multitask_scores['mae_score'] > 0

#  def test_generator_evaluator_dc_metric_multitask_single_point(self):
#    """Test generator evaluator on a dataset."""
#    X = np.random.rand(1, 5)