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))
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
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)
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)
def build_model(self): """ This method is intended to provide a way to build default model """ self.model = build_model()