示例#1
0
 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)
示例#2
0
 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)
示例#3
0
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
示例#4
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'))