def test_do_inference(self): # Given data_preprocessor = DataPreprocessor() device = "cpu" inferencer = Inferencer(data_preprocessor, device) data_dimensions = (BASE_GRAPH_NODE_FEATURES.size(), BASE_GRAPH.size(), BASE_GRAPH.view(-1).size()) model = ModelSelector.load_model("RNN") model = model(time_steps=1, number_of_nodes=data_dimensions[1][0], number_of_node_features=data_dimensions[0][1], fully_connected_layer_input_size=data_dimensions[1][0] * data_dimensions[0][1], fully_connected_layer_output_size=data_dimensions[2][0]) all_neighbors = to.tensor([[1, 2, -1, -1], [0, 2, -1, -1], [0, 1, 3, -1], [2, -1, -1, -1]]) dataset = GraphDataset("") dataset.enable_test_mode() tag = 'tag' dataset.dataset = [(BASE_GRAPH_NODE_FEATURES, all_neighbors, BASE_GRAPH.view(-1), tag)] inference_data, _, _ = DataPreprocessor().train_validation_test_split(dataset, 1, 0.0, 0.0) output_label_pairs_expected = [BASE_GRAPH.view(-1), BASE_GRAPH.view(-1)] # When output_label_pairs = inferencer.do_inference(model, inference_data) # Then self.assertEqual(output_label_pairs[0][0].squeeze().size(), output_label_pairs_expected[0].size()) self.assertEqual(output_label_pairs[0][1].squeeze().size(), output_label_pairs_expected[1].size())
def test_extract_data_dimensions(self): # Given dataset_length = 1 features = BASE_GRAPH_NODE_FEATURES all_neighbors = to.tensor([[1, 2, -1, -1], [0, 2, -1, -1], [0, 1, 3, -1], [2, -1, -1, -1]]) labels = BASE_GRAPH.view(-1) dataset = GraphDataset("") dataset.enable_test_mode() dataset.dataset = [(features, all_neighbors, labels, i) for i in range(dataset_length)] data_dimensions_expected = (features.size(), labels.size()) # When data_dimensions = self.data_preprocessor.extract_data_dimensions( dataset) # Then self.assertEqual(data_dimensions_expected, data_dimensions)
def test_do_evaluate(self): # Given data_dimensions = (BASE_GRAPH_NODE_FEATURES.size(), BASE_GRAPH.view(-1).size()) self.model_trainer.instantiate_attributes( data_dimensions, self.configuration_dictionary) all_neighbors = to.tensor([[1, 2, -1, -1], [0, 2, -1, -1], [0, 1, 3, -1], [2, -1, -1, -1]]) dataset = GraphDataset("") dataset.enable_test_mode() tag = 'tag' dataset.dataset = [(BASE_GRAPH_NODE_FEATURES, all_neighbors, BASE_GRAPH.view(-1), tag)] training_data, _, _ = DataPreprocessor().train_validation_test_split( dataset, 1, 0.0, 0.0) # When validation_loss = self.model_trainer.do_evaluate( evaluation_data=training_data, epoch=1) # Then self.assertTrue(validation_loss > 0.0)
def test_train_validation_test_split(self): # Given dataset_length = 10 features = BASE_GRAPH_NODE_FEATURES all_neighbors = to.tensor([[1, 2, -1, -1], [0, 2, -1, -1], [0, 1, 3, -1], [2, -1, -1, -1]]) labels = BASE_GRAPH.view(-1) dataset = GraphDataset("") dataset.enable_test_mode() dataset.dataset = [(features, all_neighbors, labels, i) for i in range(dataset_length)] train_validation_test_split_expected = [7, 2, 1] # When train_validation_test_split = self.data_preprocessor.train_validation_test_split( dataset, batch_size=1, validation_split=0.2, test_split=0.1) train_validation_test_split = [ len(dataset) for dataset in train_validation_test_split ] # Then self.assertEqual(train_validation_test_split_expected, train_validation_test_split)