Commit 83a9f0c7 authored by Bharath Ramsundar's avatar Bharath Ramsundar
Browse files

Accuracy is nonzero now...

parent a4013dbe
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -673,19 +673,22 @@ class TestOverfitAPI(test_util.TensorFlowTestCase):
    # Load mini log-solubility dataset.
    splittype = "scaffold"
    featurizer = ConvMolFeaturizer()
    tasks = ["log-solubility"]
    task_type = "regression"
    tasks = ["outcome"]
    task_type = "classification"
    task_types = {task: task_type for task in tasks}
    input_file = os.path.join(self.current_dir, "example.csv")
    input_file = os.path.join(self.current_dir, "example_classification.csv")
    loader = DataLoader(tasks=tasks,
                        smiles_field=self.smiles_field,
                        featurizer=featurizer,
                        verbosity="low")
    dataset = loader.featurize(input_file, self.data_dir)
    ########################################################### DEBUG
    print("dataset.y")
    print(dataset.y)
    ########################################################### DEBUG

    verbosity = "high"
    classification_metric = Metric(metrics.accuracy_score, verbosity=verbosity,
                                   task_averager=np.mean)
    classification_metric = Metric(metrics.accuracy_score, verbosity=verbosity)

    n_atoms = 50
    n_feat = 71
@@ -700,11 +703,10 @@ class TestOverfitAPI(test_util.TensorFlowTestCase):
    graph_model.add(GraphGather(batch_size, activation="tanh"))

    with self.test_session() as sess:
      tensorflow_model = MultitaskGraphClassifier(
      model = MultitaskGraphClassifier(
        sess, graph_model, n_tasks, self.model_dir, learning_rate=1e-3,
        learning_rate_decay_time=1000, optimizer_type="adam", beta1=.9,
        beta2=.999, verbosity="high")
      model = TensorflowModel(tensorflow_model, self.model_dir)

      # Fit trained model
      model.fit(dataset)
+8 −3
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@ from keras import initializations, activations
from keras import backend as K
from deepchem.datasets import pad_features
from deepchem.utils.save import log
from deepchem.models.tensorflow_models import TensorflowClassifier
from deepchem.models import Model 
from deepchem.models.tensorflow_models import model_ops
# TODO(rbharath): Find a way to get rid of this import?
from deepchem.models.tf_keras_models.graph_topology import merge_dicts
@@ -43,7 +43,7 @@ def get_loss_fn(final_loss):
      return tf.reduce_sum(weighted_costs)
  return loss_fn

class MultitaskGraphClassifier(TensorflowClassifier):
class MultitaskGraphClassifier(Model):

  def __init__(self, sess, model, n_tasks, logdir,
               final_loss='cross_entropy', learning_rate=.001,
@@ -207,7 +207,7 @@ class MultitaskGraphClassifier(TensorflowClassifier):

  def save(self):
    """
    No-op since models save themselves during fit()
    No-op since this model doesn't currently support saving... 
    """
    pass

@@ -239,6 +239,11 @@ class MultitaskGraphClassifier(TensorflowClassifier):
    outputs = np.zeros((n_samples, self.n_tasks))
    for task, output in enumerate(batch_outputs):
      outputs[:, task] = np.argmax(output, axis=1)
    #################################### DEBUG
    print("predict_on_batch")
    print("outputs")
    print(outputs)
    #################################### DEBUG
    return outputs 

  def predict_proba_on_batch(self, X, pad_batch=False, n_classes=2):