Commit 81d1047a authored by leswing's avatar leswing
Browse files

Save and load ani

parent dfdf3afc
Loading
Loading
Loading
Loading
+38 −22
Original line number Diff line number Diff line
@@ -2,13 +2,15 @@ import numpy as np
import tensorflow as tf
from deepchem.models import TensorGraph
from deepchem.models.tensorgraph.layers import Feature, Conv1D, Dense, Flatten, Reshape, Squeeze, Transpose, \
    CombineMeanStd, Repeat, Gather, GRU, L2Loss, Concat, SoftMax, Constant, Variable, Add, Multiply, Log, InteratomicL2Distances, \
  CombineMeanStd, Repeat, Gather, GRU, L2Loss, Concat, SoftMax, Constant, Variable, Add, Multiply, Log, \
  InteratomicL2Distances, \
  SoftMaxCrossEntropy, ReduceMean, ToFloat, ReduceSquareDifference, Conv2D, MaxPool, ReduceSum, GraphConv, GraphPool, \
  GraphGather, BatchNorm, WeightedError, \
  LSTMStep, AttnLSTMEmbedding, IterRefLSTMEmbedding
from deepchem.models.tensorgraph.graph_layers import Combine_AP, Separate_AP, \
  WeaveLayer, WeaveGather, DTNNEmbedding, DTNNGather, DTNNStep, \
  DTNNExtract, DAGLayer, DAGGather, MessagePassing, SetGather
from models.tensorgraph.symmetry_functions import AtomicDifferentiatedDense


def test_Conv1D_pickle():
@@ -520,3 +522,17 @@ def test_SetGather_pickle():
  tg.set_loss(Gather)
  tg.build()
  tg.save()


def test_AtomicDifferentialDense_pickle():
  max_atoms = 23
  atom_features = 100
  tg = TensorGraph()
  atom_feature = Feature(shape=(None, max_atoms, atom_features))
  atom_numbers = Feature(shape=(None, max_atoms))
  atomic_differential_dense = AtomicDifferentiatedDense(max_atoms=23, out_channels=5,
                                                        in_layers=[atom_feature, atom_numbers])
  tg.add_output(atomic_differential_dense)
  tg.set_loss(atomic_differential_dense)
  tg.build()
  tg.save()
+22 −19
Original line number Diff line number Diff line
@@ -16,22 +16,23 @@ tf.set_random_seed(123)
import deepchem as dc

# Load Tox21 dataset
tasks, datasets, transformers = dc.molnet.load_qm7_from_mat(
  featurizer='BPSymmetryFunction')
train_dataset, valid_dataset, test_dataset = datasets
# tasks, datasets, transformers = dc.molnet.load_qm7_from_mat(
#   featurizer='BPSymmetryFunction')
# train_dataset, valid_dataset, test_dataset = datasets

# Batch size of models
max_atoms = 23
batch_size = 128
batch_size = 16
layer_structures = [128, 128, 64]
atom_number_cases = [1, 6, 7, 8, 16]

ANItransformer = dc.trans.ANITransformer(
    max_atoms=max_atoms, atom_cases=atom_number_cases)
train_dataset = ANItransformer.transform(train_dataset)
valid_dataset = ANItransformer.transform(valid_dataset)
test_dataset = ANItransformer.transform(test_dataset)
n_feat = ANItransformer.get_num_feats() - 1
# ANItransformer = dc.trans.ANITransformer(
#     max_atoms=max_atoms, atom_cases=atom_number_cases)
# train_dataset = ANItransformer.transform(train_dataset)
# valid_dataset = ANItransformer.transform(valid_dataset)
# test_dataset = ANItransformer.transform(test_dataset)
# print(test_dataset.data_dir)
# n_feat = ANItransformer.get_num_feats() - 1

# Fit models
metric = [
@@ -40,15 +41,16 @@ metric = [
]

model = dc.models.ANIRegression(
    len(tasks),
  1,
  max_atoms,
    n_feat,
  1000,
  layer_structures=layer_structures,
  atom_number_cases=atom_number_cases,
  batch_size=batch_size,
  learning_rate=0.001,
  use_queue=False,
  mode="regression")
model.build()

# Fit trained model
model.fit(train_dataset, nb_epoch=300, checkpoint_interval=100)
@@ -58,6 +60,7 @@ train_scores = model.evaluate(train_dataset, metric, transformers)
valid_scores = model.evaluate(valid_dataset, metric, transformers)
model.save()


model = TensorGraph.load_from_dir(model.model_dir)
train_scores2 = model.evaluate(train_dataset, metric, transformers)
valid_scores2 = model.evaluate(valid_dataset, metric, transformers)