Commit dccc7555 authored by Bharath Ramsundar's avatar Bharath Ramsundar Committed by GitHub
Browse files

Merge pull request #289 from rbharath/tf_simplification

Simplifying Tensorflow API
parents 89f3411e 7b9dfb54
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@ class HyperparamOpt(object):
  Provides simple hyperparameter search capabilities.
  """

  def __init__(self, model_class, verbosity=None):
  def __init__(self, model_class, verbosity="high"):
    self.model_class = model_class
    assert verbosity in [None, "low", "high"]
    self.verbosity = verbosity
+2 −3
Original line number Diff line number Diff line
@@ -165,9 +165,8 @@ class TestHyperparamOptAPI(unittest.TestCase):
    params_dict = {"layer_sizes": [(10,), (100,)]}

    def model_builder(model_params, model_dir):
        tensorflow_model = dc.models.TensorflowMultiTaskClassifier(
      return dc.models.TensorflowMultiTaskClassifier(
          len(tasks), n_features, model_dir, **model_params)
        return dc.models.TensorflowModel(tensorflow_model)
    optimizer = dc.hyper.HyperparamOpt(model_builder)
    best_model, best_hyperparams, all_results = optimizer.hyperparam_search(
      params_dict, train_dataset, valid_dataset, transformers, metric,
+8 −6
Original line number Diff line number Diff line
@@ -104,7 +104,7 @@ class Metric(object):
  """Wrapper class for computing user-defined metrics."""

  def __init__(self, metric, task_averager=None, name=None, threshold=None,
               verbosity=None, mode=None, compute_energy_metric=False):
               verbosity="high", mode=None, compute_energy_metric=False):
    """
    Args:
      metric: function that takes args y_true, y_pred (in that order) and
@@ -127,10 +127,12 @@ class Metric(object):
    self.verbosity = verbosity
    self.threshold = threshold
    if mode is None:
      if self.metric.__name__ in ["roc_auc_score", "matthews_corrcoef", "recall_score",
                       "accuracy_score", "kappa_score", "precision_score"]:
      if self.metric.__name__ in ["roc_auc_score", "matthews_corrcoef",
                                  "recall_score", "accuracy_score",
                                  "kappa_score", "precision_score"]:
        mode = "classification"
      elif self.metric.__name__ in ["pearson_r2_score", "r2_score", "mean_squared_error",
      elif self.metric.__name__ in ["pearson_r2_score", "r2_score",
                                    "mean_squared_error",
                                    "mean_absolute_error", "rms_score",
                                    "mae_score"]:
        mode = "regression"
+5 −6
Original line number Diff line number Diff line
@@ -10,15 +10,14 @@ from deepchem.models.sklearn_models import SklearnModel
from deepchem.models.keras_models import KerasModel
from deepchem.models.tf_keras_models.multitask_classifier import MultitaskGraphClassifier
from deepchem.models.tf_keras_models.support_classifier import SupportGraphClassifier
from deepchem.models.tensorflow_models import TensorflowModel
from deepchem.models.multitask import SingletaskToMultitask

# TODO(rbharath): I'm not sure if these belong here or in deepchem.nn
# The issue is that these are not valid deepchem models. The solution might be
# to make inherit from Model class
from deepchem.models.keras_models.fcnet import MultiTaskDNN
from deepchem.models.tensorflow_models.fcnet import TensorflowMultiTaskRegressor
from deepchem.models.tensorflow_models.fcnet import TensorflowMultiTaskClassifier
from deepchem.models.tensorflow_models.robust_multitask import RobustMultitaskRegressor
from deepchem.models.tensorflow_models.robust_multitask import RobustMultitaskClassifier
from deepchem.models.tensorflow_models.lr import TensorflowLogisticRegression

# TODO(rbharath): I'm not sure if this model should be exposed. Not in
# benchmark suite for example.
from deepchem.models.keras_models.fcnet import MultiTaskDNN
+2 −1
Original line number Diff line number Diff line
@@ -162,7 +162,8 @@ class Model(object):
    """
    y_preds = []
    n_tasks = self.get_num_tasks()
    for (X_batch, y_batch, w_batch, ids_batch) in dataset.iterbatches(
    ind = 0
    for (X_batch, _, _, ids_batch) in dataset.iterbatches(
        batch_size, deterministic=True):
      n_samples = len(X_batch)
      y_pred_batch = self.predict_on_batch(X_batch, pad_batch=pad_batches)
Loading