コード例 #1
0
    def test_serialize(self):
        random = np.random.RandomState(seed=42)
        node_features = generate_random_node_features(random, 1, 3, 1)

        input = TensorGraph(
            node_features,
            np.array([[
                [[0, 0, 1], [0, 0, 1], [1, 1, 0]],
                [[1, 2, 2], [2, 3, 5], [2, 5, 3]],
            ]],
                     dtype=float))
        expected_output = TensorGraph(
            node_features,
            np.array([[
                [[0, 0, 0.71], [0, 0, 0.71], [0.71, 0.71, 0]],
                [[0.2, 0.28, 0.28], [0.28, 0.3, 0.5], [0.28, 0.5, 0.3]],
            ]],
                     dtype=float))

        model_input = TensorGraphInput(
            TensorGraphShape(num_nodes=3, edge_dims=2))
        x = NormaliseGraph(method='spectral')(model_input)
        model = tf.keras.Model(model_input, x)
        config = model.get_config()

        reinitialized_model = tf.keras.Model.from_config(config)
        output = reinitialized_model(input)

        assert_graph_equal(self,
                           expected_output,
                           output,
                           allow_nodes_close=True,
                           allow_edges_close=True)
コード例 #2
0
    def test_serialize(self):
        random = np.random.RandomState(seed=42)
        node_features = generate_random_node_features(random, 1, 3, 1)

        input = TensorGraph(
            node_features,
            np.array([[
                [[0, 1, 0], [1, 0, 0], [0, 1, 0]],
                [[0, 2, 3], [2, 0, 4], [3, 4, 0]],
            ]],
                     dtype=float))
        expected_output = TensorGraph(
            node_features,
            np.array([[
                [[1, 1, 0], [1, 1, 0], [0, 1, 1]],
                [[1, 2, 3], [2, 1, 4], [3, 4, 1]],
            ]],
                     dtype=float))

        model_input = TensorGraphInput(
            TensorGraphShape(num_nodes=3, edge_dims=2))
        x = AddSelfLoops()(model_input)
        model = tf.keras.Model(model_input, x)
        config = model.get_config()

        reinitialized_model = tf.keras.Model.from_config(config)
        output = reinitialized_model(input)

        assert_graph_equal(self,
                           expected_output,
                           output,
                           allow_nodes_close=True)
コード例 #3
0
    def test_node_and_edge_features(self):
        random = np.random.RandomState(seed=42)
        node_features = generate_random_node_features(random, 3, 10, 42)
        edge_features = generate_random_adjacency(random, 3, 10, 7)

        node_tensor = tf.convert_to_tensor(node_features, dtype=tf.float32)
        edge_tensor = tf.convert_to_tensor(edge_features, dtype=tf.float32)

        graph = TensorGraph(node_tensor, edge_tensor)

        self.assertAllEqual(node_tensor, graph[NODE_FEATURES])
        self.assertAllEqual(edge_tensor, graph[EDGE_FEATURES])
コード例 #4
0
    def test_tfrecord_to_tensorgraph_with_name(self):
        random = np.random.RandomState(seed=42)
        num_nodes = 10
        node_features = generate_random_node_features(random, None, num_nodes,
                                                      42)
        edge_features = generate_random_adjacency(random, None, num_nodes, 7)

        example = {
            'test:num_nodes': tf.convert_to_tensor(num_nodes),
            'test:node_features':
            tf.sparse.from_dense(node_features.flatten()),
            'test:edge_features': tf.sparse.from_dense(edge_features.flatten())
        }

        graph = tfrecord_to_tensorgraph(example, name='test')

        self.assertAllEqual(node_features, graph[NODE_FEATURES])
        self.assertAllEqual(edge_features, graph[EDGE_FEATURES])