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