Commit e1ca2abc authored by miaecle's avatar miaecle
Browse files

change settings for DTNN

parent 3ab4460a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@ from deepchem.models.models import Model
from deepchem.models.sklearn_models import SklearnModel
from deepchem.models.xgboost_models import XGBoostModel
from deepchem.models.tf_new_models.multitask_classifier import MultitaskGraphClassifier
from deepchem.models.tf_new_models.multitask_regressor import MultitaskGraphRegressor
from deepchem.models.tf_new_models.multitask_regressor import MultitaskGraphRegressor, DTNNMultitaskGraphRegressor

from deepchem.models.tf_new_models.support_classifier import SupportGraphClassifier
from deepchem.models.multitask import SingletaskToMultitask
+16 −0
Original line number Diff line number Diff line
@@ -212,3 +212,19 @@ class MultitaskGraphRegressor(Model):
  def get_num_tasks(self):
    """Needed to use Model.predict() from superclass."""
    return self.n_tasks


class DTNNMultitaskGraphRegressor(MultitaskGraphRegressor):

  def build(self):
    # Create target inputs
    self.label_placeholder = tf.placeholder(
        dtype='float32', shape=(None, self.n_tasks), name="label_placeholder")
    self.weight_placeholder = tf.placeholder(
        dtype='float32', shape=(None, self.n_tasks), name="weight_placholder")

    feat = self.model.return_outputs()
    outputs = []
    for task in range(self.n_tasks):
      outputs.append(feat[:, task])
    return outputs
+30 −30
Original line number Diff line number Diff line
@@ -827,7 +827,7 @@ class DTNNEmbedding(Layer):

  def __init__(self,
               n_embedding=30,
               periodic_table_length=83,
               periodic_table_length=30,
               init='glorot_uniform',
               **kwargs):
    """
@@ -975,8 +975,8 @@ class DTNNGather(Layer):

  def __init__(self,
               n_embedding=30,
               n_outputs=100,
               layer_sizes=[100],
               layer_sizes=[15],
               n_tasks=1,
               init='glorot_uniform',
               activation='tanh',
               **kwargs):
@@ -985,18 +985,18 @@ class DTNNGather(Layer):
    ----------
    n_embedding: int, optional
      Number of features for each atom
    n_outputs: int, optional
      Number of features for each molecule(output)
    layer_sizes: list of int, optional(default=[1000])
      Structure of hidden layer(s)
    n_tasks: int, optional
      Number of final summed outputs
    init: str, optional
      Weight initialization for filters.
    activation: str, optional
      Activation function applied
    """
    self.n_embedding = n_embedding
    self.n_outputs = n_outputs
    self.layer_sizes = layer_sizes
    self.n_outputs = n_tasks
    self.init = initializations.get(init)  # Set weight initialization
    self.activation = activations.get(activation)  # Get activations

@@ -1016,7 +1016,6 @@ class DTNNGather(Layer):
    self.b_list.append(model_ops.zeros(shape=[
        self.n_outputs,
    ]))
    prev_layer_size = self.n_outputs

    self.trainable_weights = self.W_list + self.b_list

@@ -1037,9 +1036,10 @@ class DTNNGather(Layer):
    self.build()
    output = x[0]
    atom_membership = x[1]
    for i, W in enumerate(self.W_list):
    for i, W in enumerate(self.W_list[:-1]):
      output = tf.matmul(output, W) + self.b_list[i]
      output = self.activation(output)
    output = tf.matmul(output, self.W_list[-1]) + self.b_list[-1]
    output = tf.segment_sum(output, atom_membership)
    return output

+12 −8
Original line number Diff line number Diff line
@@ -23,27 +23,31 @@ metric = [

# Batch size of models
batch_size = 50
n_embedding = 20
graph_model = dc.nn.SequentialDTNNGraph(n_distance=100)
n_embedding = 30

graph_model = dc.nn.SequentialDTNNGraph(
    n_distance=51, distance_max=9.2, distance_min=-1.)
graph_model.add(dc.nn.DTNNEmbedding(n_embedding=n_embedding))
graph_model.add(dc.nn.DTNNStep(n_embedding=n_embedding, n_distance=100))
graph_model.add(dc.nn.DTNNStep(n_embedding=n_embedding, n_distance=100))
graph_model.add(dc.nn.DTNNGather(n_embedding=n_embedding))
graph_model.add(dc.nn.DTNNStep(n_embedding=n_embedding, n_distance=51))
graph_model.add(dc.nn.DTNNStep(n_embedding=n_embedding, n_distance=51))
graph_model.add(
    dc.nn.DTNNGather(
        n_embedding=n_embedding, layer_sizes=[15], n_tasks=len(tasks)))
n_feat = n_embedding

model = dc.models.MultitaskGraphRegressor(
model = dc.models.DTNNMultitaskGraphRegressor(
    graph_model,
    len(tasks),
    n_feat,
    batch_size=batch_size,
    learning_rate=0.001,
    learning_rate=0.0001,
    learning_rate_decay_time=1000,
    optimizer_type="adam",
    beta1=.9,
    beta2=.999)

# Fit trained model
model.fit(train_dataset, nb_epoch=50)
model.fit(train_dataset, nb_epoch=3000)

print("Evaluating model")
train_scores = model.evaluate(train_dataset, metric, transformers)