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)
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)
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])
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])