Example #1
0
    def test_build_ensemble_model(self):

        embedding_size = 300
        attribute_vector_size = 10
        hidden = 0
        n_model = 10
        dropout_rate_inner = 0.5
        dropout_rate_outer = 0.5
        dropout_rate_hidden = 0.5
        dropout_rate_output = 0.5
        padding_final_size = 50
        test_model = build_model(embedding_size=embedding_size,
                                 attribute_vector_size=attribute_vector_size,
                                 hidden=hidden,
                                 n_model=n_model,
                                 dropout_rate_inner=dropout_rate_inner,
                                 dropout_rate_outer=dropout_rate_outer,
                                 dropout_rate_hidden=dropout_rate_hidden,
                                 dropout_rate_output=dropout_rate_output,
                                 padding_final_size=padding_final_size)
        self.assertEqual(len(test_model.seeds), n_model)
        self.assertTrue(isinstance(test_model, EnsembleModel))
        self.assertTrue(isinstance(test_model.layers[1], MoleculeConv))
        self.assertTrue(isinstance(test_model.layers[2], RandomMask))
        self.assertTrue(isinstance(test_model.layers[3], Dense))
Example #2
0
def predictor_model(prediction_task="Hf298(kcal/mol)",
                    embedding_size=512,
                    attribute_vector_size=None,
                    depth=2,
                    add_extra_atom_attribute=True,
                    add_extra_bond_attribute=True,
                    differentiate_atom_type=True,
                    differentiate_bond_type=True,
                    scale_output=0.05,
                    padding=False,
                    padding_final_size=20,
                    mol_conv_inner_activation='tanh',
                    mol_conv_outer_activation='softmax',
                    hidden=0,
                    hidden_depth=1,
                    hidden_activation='tanh',
                    output_activation='linear',
                    output_size=1,
                    lr=0.01,
                    optimizer='adam',
                    loss='mse',
                    dropout_rate_inner=0.0,
                    dropout_rate_outer=0.0,
                    dropout_rate_hidden=0.0,
                    dropout_rate_output=0.0,
                    n_model=None,
                    freeze_mol_conv=False):

    if dropout_rate_inner==0.0 and dropout_rate_outer==0.0 \
        and dropout_rate_hidden==0.0 and dropout_rate_output==0.0:
        n_model = None

    if attribute_vector_size is None:
        attribute_vector_size = get_attribute_vector_size(
            add_extra_atom_attribute, add_extra_bond_attribute,
            differentiate_atom_type, differentiate_bond_type)

    model = build_model(embedding_size, attribute_vector_size, depth,
                        scale_output, padding, mol_conv_inner_activation,
                        mol_conv_outer_activation, hidden, hidden_depth,
                        hidden_activation, output_activation, output_size, lr,
                        optimizer, loss, dropout_rate_inner,
                        dropout_rate_outer, dropout_rate_hidden,
                        dropout_rate_output, n_model, padding_final_size,
                        freeze_mol_conv)

    predictor.prediction_task = prediction_task
    predictor.model = model
    predictor.add_extra_atom_attribute = add_extra_atom_attribute
    predictor.add_extra_bond_attribute = add_extra_bond_attribute
    predictor.differentiate_bond_type = differentiate_bond_type
    predictor.differentiate_atom_type = differentiate_atom_type
    predictor.padding = padding
    predictor.padding_final_size = padding_final_size
Example #3
0
    def test_build_model(self):

        embedding_size = 300
        attribute_vector_size = 10
        hidden = 0
        test_model = build_model(embedding_size=embedding_size,
                                 attribute_vector_size=attribute_vector_size,
                                 hidden=hidden)
        self.assertEqual(len(test_model.layers), 3)
        self.assertTrue(isinstance(test_model.layers[1], MoleculeConv))
        self.assertTrue(isinstance(test_model.layers[2], Dense))

        self.assertEqual(test_model.layers[1].inner_dim,
                         attribute_vector_size - 1)
        self.assertEqual(test_model.layers[1].units, embedding_size)
Example #4
0
    def test_save_model(self):

        embedding_size = 300
        attribute_vector_size = 10
        hidden = 0
        test_model = build_model(embedding_size=embedding_size,
                                 attribute_vector_size=attribute_vector_size,
                                 hidden=hidden)

        save_model_folder = os.path.join(os.path.dirname(dde.__file__),
                                         'test_data', 'save_model_test')
        if not os.path.exists(save_model_folder):
            os.mkdir(save_model_folder)

        fpath = os.path.join(save_model_folder, 'model')

        save_model(test_model, [1.0], [1.0], 1.0, 1.0, fpath)

        import shutil
        shutil.rmtree(save_model_folder)
Example #5
0
 def build_model(self):
     """
     This method is intended to provide a way to build default model
     """
     self.model = build_model()