def train_and_test_network():
    """
    Train a neural network and test it. Can also train on other feature types,
    or run the experimenter to run different configurations
    """
    min_speakers = 1
    max_speakers = 10

    # Load data from filesystem
    data_loader = DataLoader(train_dir, test_src_dr, test_dest_dir)
    data_loader.force_recreate = False
    data_loader.min_speakers = min_speakers
    data_loader.max_speakers = max_speakers

    # Train network
    train, (test_x, test_y) = data_loader.load_data()
    libri_x, libri_y = data_loader.load_libricount(libri_dir)

    # Train and test network
    file = 'testing_rnn'
    net = RNN()
    net.save_to_file(file)
    net.train(train, min_speakers, max_speakers, FEATURE_TYPE)

    net.load_from_file(file)

    timit_results = net.test(test_x, test_y, FEATURE_TYPE)
    libri_results = net.test(libri_x, libri_y, FEATURE_TYPE)
Esempio n. 2
0
    def test_networks(self):
        """
        Test the networks saved by run(). Save to json
        """
        data = self.__get_test_data()
        result = {}
        for (min_speakers, max_speakers) in [[1, 10], [1, 20]]:
            result_for_trainset = {}
            for feature_type in self.feature_options:
                result_for_feature = {}
                # Load best performing model
                network = RNN()
                name = f'./trained_networks_with_augmentation/rnn_train_{min_speakers}_{max_speakers}/{feature_type}'
                network.load_from_file(name)

                # Test performance
                for test_name, test_data_current in data.items():
                    x, y = test_data_current['x'], test_data_current['y']
                    result_for_feature[test_name] = self.__test_net(
                        network, x, y, feature_type)

                result_for_trainset[feature_type] = result_for_feature
            result[
                f'train_{min_speakers}_{max_speakers}'] = result_for_trainset
        with open('experiment_networks_tested.json', 'w+') as fp:
            json.dump(result, fp)
        return result