Ejemplo n.º 1
0
def test_forward_cpu_graph_invariant(gwm, data):
    permutation_index = numpy.random.permutation(atom_size)
    gwm.reset_state()
    embed_atom_data, new_embed_atom_data, supernode = data[:3]
    h_actual, g_actual = gwm(embed_atom_data, new_embed_atom_data, supernode)

    permute_embed_atom_data = permute_node(embed_atom_data,
                                           permutation_index,
                                           axis=1)
    permute_new_embed_atom_data = permute_node(new_embed_atom_data,
                                               permutation_index,
                                               axis=1)
    gwm.reset_state()
    permute_h_actual, permute_g_actual = gwm(permute_embed_atom_data,
                                             permute_new_embed_atom_data,
                                             supernode)
    numpy.testing.assert_allclose(permute_node(h_actual.data,
                                               permutation_index,
                                               axis=1),
                                  permute_h_actual.data,
                                  rtol=1e-5,
                                  atol=1e-5)

    numpy.testing.assert_allclose(g_actual.data,
                                  permute_g_actual.data,
                                  rtol=1e-5,
                                  atol=1e-5)
Ejemplo n.º 2
0
def test_forward_cpu_graph_invariant(readout, data):
    atom_data, atom_data0 = data[:2]
    y_actual = cuda.to_cpu(readout(atom_data, atom_data0).data)

    permutation_index = numpy.random.permutation(atom_size)
    permute_atom_data = permute_node(atom_data, permutation_index, axis=1)
    permute_atom_data0 = permute_node(atom_data0, permutation_index, axis=1)
    permute_y_actual = cuda.to_cpu(readout(
        permute_atom_data, permute_atom_data0).data)
    numpy.testing.assert_allclose(
        y_actual, permute_y_actual, rtol=1e-5, atol=1e-5)
def test_forward_cpu_graph_invariant(update, data):
    atom_data, dist_data = data[:2]
    y_actual = cuda.to_cpu(update(atom_data, dist_data).data)

    permutation_index = numpy.random.permutation(atom_size)
    permute_atom_data = permute_node(atom_data, permutation_index, axis=1)
    permute_dist_data = permute_adj(dist_data, permutation_index)
    permute_y_actual = cuda.to_cpu(update(
        permute_atom_data, permute_dist_data).data)
    numpy.testing.assert_allclose(
        permute_node(y_actual, permutation_index, axis=1),
        permute_y_actual, rtol=1e-5, atol=1e-5)
Ejemplo n.º 4
0
def test_forward_cpu_graph_invariant(update, data):
    atom_data, adj_data = data[:2]
    y_actual = cuda.to_cpu(update(atom_data, adj_data).data)

    permutation_index = numpy.random.permutation(atom_size)
    permute_atom_data = permute_node(atom_data, permutation_index, axis=1)
    permute_adj_data = permute_adj(adj_data, permutation_index)
    permute_y_actual = cuda.to_cpu(
        update(permute_atom_data, permute_adj_data).data)
    numpy.testing.assert_allclose(
        permute_node(y_actual, permutation_index, axis=1), permute_y_actual,
        rtol=1e-5, atol=1e-5)
Ejemplo n.º 5
0
def test_forward_cpu_graph_invariant(update, data):
    # type: (GINUpdate, Tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray]) -> None  # NOQA
    atom_data, adj_data = data[:2]
    y_actual = cuda.to_cpu(update(atom_data, adj_data).data)

    permutation_index = numpy.random.permutation(atom_size)
    permute_atom_data = permute_node(atom_data, permutation_index, axis=1)
    permute_adj_data = permute_adj(adj_data, permutation_index)
    permute_y_actual = cuda.to_cpu(
        update(permute_atom_data, permute_adj_data).data)
    numpy.testing.assert_allclose(permute_node(y_actual,
                                               permutation_index,
                                               axis=1),
                                  permute_y_actual,
                                  rtol=1e-3,
                                  atol=1e-3)
Ejemplo n.º 6
0
def test_forward_cpu_graph_invariant(readouts, data):
    atom_data = data[0]
    permutation_index = numpy.random.permutation(atom_size)
    permute_atom_data = permute_node(atom_data, permutation_index, axis=1)
    for readout in readouts:
        y_actual = cuda.to_cpu(readout(atom_data).data)
        permute_y_actual = cuda.to_cpu(readout(permute_atom_data).data)
        numpy.testing.assert_allclose(
            y_actual, permute_y_actual, rtol=1e-5, atol=1e-5)
Ejemplo n.º 7
0
def test_forward_cpu_graph_invariant(update, data):
    atom_data, adj_data, deg_conds = data[:3]
    y_actual = cuda.to_cpu(update(atom_data, adj_data, deg_conds).data)

    permutation_index = numpy.random.permutation(atom_size)
    # atom_data: (batch_size, atom_size, hidden_channels)
    permute_atom_data = permute_node(atom_data, permutation_index, axis=1)
    permute_adj_data = permute_adj(adj_data, permutation_index)
    # deg_conds: (num_degree_type, batch_size, atom_size, hidden_channels)
    permute_deg_conds = permute_node(deg_conds, permutation_index, axis=2)
    permute_y_actual = cuda.to_cpu(
        update(permute_atom_data, permute_adj_data, permute_deg_conds).data)
    numpy.testing.assert_allclose(permute_node(y_actual,
                                               permutation_index,
                                               axis=1),
                                  permute_y_actual,
                                  rtol=1e-5,
                                  atol=1e-5)
Ejemplo n.º 8
0
def test_forward_cpu_graph_invariant(model, data):
    atom_data, adj_data = data[0], data[1]
    y_actual = cuda.to_cpu(model(atom_data, adj_data).data)

    permutation_index = numpy.random.permutation(atom_size)
    permute_atom_data = permute_node(atom_data, permutation_index)
    permute_adj_data = permute_adj(adj_data, permutation_index)
    permute_y_actual = cuda.to_cpu(model(
        permute_atom_data, permute_adj_data).data)
    assert numpy.allclose(y_actual, permute_y_actual, rtol=1e-5, atol=1e-6)
Ejemplo n.º 9
0
def test_foward_cpu_graph_invariant(readout, data):
    # type: (MPNNReadout, Tuple[numpy.ndarray, numpy.ndarray]) -> None
    atom_data = data[0]
    y_actual = cuda.to_cpu(readout(atom_data).data)

    permutation_index = numpy.random.permutation(atom_size)
    permute_atom_data = permute_node(atom_data, permutation_index, axis=1)
    permute_y_actual = cuda.to_cpu(readout(permute_atom_data).data)
    numpy.testing.assert_allclose(
        y_actual, permute_y_actual, rtol=1e-5, atol=1e-5)
Ejemplo n.º 10
0
def test_foward_cpu_graph_invariant(readout, data):
    # type: (MPNNReadout, Tuple[numpy.ndarray, numpy.ndarray]) -> None
    atom_data = data[0]
    y_actual = cuda.to_cpu(readout(atom_data).data)

    permutation_index = numpy.random.permutation(atom_size)
    permute_atom_data = permute_node(atom_data, permutation_index, axis=1)
    permute_y_actual = cuda.to_cpu(readout(permute_atom_data).data)
    numpy.testing.assert_allclose(
        y_actual, permute_y_actual, rtol=1e-5, atol=1e-5)
Ejemplo n.º 11
0
def test_forward_cpu_graph_invariant(model, data):
    atom_data, adj_data = data[0], data[1]
    y_actual = cuda.to_cpu(model(atom_data, adj_data).data)

    permutation_index = numpy.random.permutation(atom_size)
    permute_atom_data = permute_node(atom_data, permutation_index)
    permute_adj_data = permute_adj(adj_data, permutation_index)
    permute_y_actual = cuda.to_cpu(
        model(permute_atom_data, permute_adj_data).data)
    assert numpy.allclose(y_actual, permute_y_actual, rtol=1e-5, atol=1e-6)
Ejemplo n.º 12
0
def test_forward_cpu_graph_invariant(model, data):
    # type: (GraphConvPredictor, Tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray]) -> None  # NOQA
    atom_data, adj_data = data[:2]
    y_actual = cuda.to_cpu(model(atom_data, adj_data).data)

    permutation_index = numpy.random.permutation(atom_size)
    permute_atom_data = permute_node(atom_data, permutation_index)
    permute_adj_data = permute_adj(adj_data, permutation_index)
    permute_y_actual = cuda.to_cpu(
        model(permute_atom_data, permute_adj_data).data)
    assert numpy.allclose(y_actual, permute_y_actual, rtol=1e-5, atol=1e-5)
def test_forward_cpu_graph_invariant(model, data):
    # type: (GraphConvPredictor, Tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray]) -> None  # NOQA
    atom_data, adj_data = data[:2]
    y_actual = cuda.to_cpu(model(atom_data, adj_data).data)

    permutation_index = numpy.random.permutation(atom_size)
    permute_atom_data = permute_node(atom_data, permutation_index)
    permute_adj_data = permute_adj(adj_data, permutation_index)
    permute_y_actual = cuda.to_cpu(
        model(permute_atom_data, permute_adj_data).data)
    assert numpy.allclose(y_actual, permute_y_actual, rtol=1e-5, atol=1e-5)
Ejemplo n.º 14
0
def test_forward_cpu_graph_invariant(model, data):
    # This RSGCN uses dropout, so we need to forward with test mode
    # to remove stochastic calculation.
    atom_data, adj_data = data[0], data[1]
    with chainer.using_config('train', False):
        y_actual = cuda.to_cpu(model(atom_data, adj_data).data)

    permutation_index = numpy.random.permutation(atom_size)
    permute_atom_data = permute_node(atom_data, permutation_index)
    permute_adj_data = permute_adj(adj_data, permutation_index)
    with chainer.using_config('train', False):
        permute_y_actual = cuda.to_cpu(
            model(permute_atom_data, permute_adj_data).data)
    assert numpy.allclose(y_actual, permute_y_actual, rtol=1.e-4, atol=1.e-5)
Ejemplo n.º 15
0
def test_forward_cpu_graph_invariant(model, data):
    # This RSGCN uses dropout, so we need to forward with test mode
    # to remove stochastic calculation.
    atom_data, adj_data = data[0], data[1]
    with chainer.using_config('train', False):
        y_actual = cuda.to_cpu(model(atom_data, adj_data).data)

    permutation_index = numpy.random.permutation(atom_size)
    permute_atom_data = permute_node(atom_data, permutation_index)
    permute_adj_data = permute_adj(adj_data, permutation_index)
    with chainer.using_config('train', False):
        permute_y_actual = cuda.to_cpu(model(
            permute_atom_data, permute_adj_data).data)
    assert numpy.allclose(y_actual, permute_y_actual, rtol=1.e-4, atol=1.e-5)
Ejemplo n.º 16
0
def test_forward_cpu_graph_invariant(model, data):
    # type: (MPNN, Tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray]) -> None
    if model.message_func == 'edgenet':
        return
        # Because EdgeNet uses NN for expanding edge vector dimension,
        # graph invariant is not ensured.
    atom_data, adj_data = data[0], data[1]
    y_actual = cuda.to_cpu(model(atom_data, adj_data).data)

    permutation_index = numpy.random.permutation(atom_size)
    permute_atom_data = permute_node(atom_data, permutation_index)
    permute_adj_data = permute_adj(adj_data, permutation_index)
    permute_y_actual = cuda.to_cpu(
        model(permute_atom_data, permute_adj_data).data)
    assert numpy.allclose(y_actual, permute_y_actual, rtol=1e-3, atol=1e-3)
Ejemplo n.º 17
0
def test_forward_cpu_graph_invariant(model, data):
    # type: (MPNN, Tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray]) -> None
    if model.message_func == 'edgenet':
        return
        # Because EdgeNet uses NN for expanding edge vector dimension,
        # graph invariant is not ensured.
    atom_data, adj_data = data[0], data[1]
    y_actual = cuda.to_cpu(model(atom_data, adj_data).data)

    permutation_index = numpy.random.permutation(atom_size)
    permute_atom_data = permute_node(atom_data, permutation_index)
    permute_adj_data = permute_adj(adj_data, permutation_index)
    permute_y_actual = cuda.to_cpu(
        model(permute_atom_data, permute_adj_data).data)
    assert numpy.allclose(y_actual, permute_y_actual, rtol=1e-3, atol=1e-3)
Ejemplo n.º 18
0
def _test_forward_cpu_graph_invariant(
        model, atom_data, adj_data, node_permute_axis=-1):
    y_actual = cuda.to_cpu(model(atom_data, adj_data).data)

    permutation_index = numpy.random.permutation(atom_size)
    permute_atom_data = permute_node(atom_data, permutation_index,
                                     axis=node_permute_axis)
    permute_adj_data = adj_data.reshape(
        batch_size, atom_size, atom_size, pair_feature_dim
    ).astype(numpy.float32)
    permute_adj_data = permute_adj(
        permute_adj_data, permutation_index, axis=[1, 2])
    permute_adj_data = permute_adj_data.reshape(
        batch_size, atom_size * atom_size, pair_feature_dim
    ).astype(numpy.float32)
    permute_y_actual = cuda.to_cpu(model(
        permute_atom_data, permute_adj_data).data)
    assert numpy.allclose(y_actual, permute_y_actual, rtol=1.e-4, atol=1.e-6)
Ejemplo n.º 19
0
def _test_forward_cpu_graph_invariant(model,
                                      atom_data,
                                      adj_data,
                                      node_permute_axis=-1):
    y_actual = cuda.to_cpu(model(atom_data, adj_data).data)

    permutation_index = numpy.random.permutation(atom_size)
    permute_atom_data = permute_node(atom_data,
                                     permutation_index,
                                     axis=node_permute_axis)
    permute_adj_data = adj_data.reshape(batch_size, atom_size, atom_size,
                                        pair_feature_dim).astype(numpy.float32)
    permute_adj_data = permute_adj(permute_adj_data,
                                   permutation_index,
                                   axis=[1, 2])
    permute_adj_data = permute_adj_data.reshape(
        batch_size, atom_size * atom_size,
        pair_feature_dim).astype(numpy.float32)
    permute_y_actual = cuda.to_cpu(
        model(permute_atom_data, permute_adj_data).data)
    assert numpy.allclose(y_actual, permute_y_actual, rtol=1.e-4, atol=1.e-6)