def test_l2_loss_pytorch(self): """Test L2Loss.""" loss = losses.L2Loss() outputs = torch.tensor([[0.1, 0.8], [0.4, 0.6]]) labels = torch.tensor([[0.0, 1.0], [1.0, 0.0]]) result = loss._create_pytorch_loss()(outputs, labels).numpy() expected = [[0.1**2, 0.2**2], [0.6**2, 0.6**2]] assert np.allclose(expected, result)
def test_l2_loss_tf(self): """Test L2Loss.""" loss = losses.L2Loss() outputs = tf.constant([[0.1, 0.8], [0.4, 0.6]]) labels = tf.constant([[0.0, 1.0], [1.0, 0.0]]) result = loss._compute_tf_loss(outputs, labels).numpy() expected = [[0.1**2, 0.2**2], [0.6**2, 0.6**2]] assert np.allclose(expected, result)
def test_gat_classification(): # load datasets featurizer = MolGraphConvFeaturizer() tasks, dataset, transformers, metric = get_dataset('regression', featurizer=featurizer) # initialize models n_tasks = len(tasks) model = GATModel(n_tasks=n_tasks, loss=losses.L2Loss(), batch_size=4, learning_rate=0.001) # overfit test model.fit(dataset, nb_epoch=100) scores = model.evaluate(dataset, [metric], transformers) # TODO: check this asseration is correct or not assert scores['mean_absolute_error'] < 1.0
def test_cgcnn(): # load datasets current_dir = path.dirname(path.abspath(__file__)) config = { "reload": False, "featurizer": CGCNNFeaturizer, # disable transformer "transformers": [], # load 'deepchem/models/test/perovskite.tar.gz' "data_dir": current_dir } tasks, datasets, transformers = load_perovskite(**config) train, valid, test = datasets # initialize models n_tasks = 1 model = CGCNNModel(in_node_dim=92, hidden_node_dim=64, in_edge_dim=41, num_conv=3, predicator_hidden_feats=128, n_tasks=n_tasks, loss=losses.L2Loss(), batch_size=32, learning_rate=0.001) # check train model.fit(train, nb_epoch=50) # check predict valid_preds = model.predict_on_batch(valid.X) assert valid_preds.shape == (10, n_tasks) test_preds = model.predict(test) assert test_preds.shape == (10, n_tasks) # eval model on test regression_metric = Metric(mae_score, n_tasks=n_tasks) scores = model.evaluate(test, [regression_metric]) assert scores[regression_metric.name] < 1.0 if path.exists(path.join(current_dir, 'perovskite.json')): remove(path.join(current_dir, 'perovskite.json'))