def test_stack_histories_fail_wrong_type(self): """ Should raise an error, as other is no ExperimentHistory but a list. """ histories0 = ExperimentHistories() histories0.setup(1, 1, 1, 1, 1) with self.assertRaises(AssertionError): histories0.stack_histories([])
def test_stack_histories_fail_unequal_sparsity(self): """ Should raise an error, as the sparsity-histories do not match. """ histories0, histories1 = ExperimentHistories(), ExperimentHistories() histories0.setup(1, 1, 2, 3, 2) histories1.setup(1, 1, 2, 3, 2) histories0.sparsity, histories1.sparsity = np.array( [1., 0.5]), np.array([1., 0.7]) with self.assertRaises(AssertionError): histories0.stack_histories(histories1)
def test_stack_histories(self): """ Should stack two histories, i.e. append their arrays at the net-dimension. The sparsity histories should not be appended, as they need to be equal. """ histories0 = ExperimentHistories() histories1 = ExperimentHistories() histories0.setup( 2, 1, 2, 3, 2 ) # arrays for accuracies and losses have shape (2, 2, 3), all filled with zeroes histories1.setup(2, 1, 2, 3, 2) # fill arrays for accuracies and losses with ones histories1.train_loss = np.ones_like(histories1.train_loss) histories1.val_loss = np.ones_like(histories1.val_loss) histories1.val_acc = np.ones_like(histories1.val_acc) histories1.test_acc = np.ones_like(histories1.test_acc) # expected history for accuracies and losses expected_history = np.array( [[[0., 0., 0.], [0., 0., 0.]], [[0., 0., 0.], [0., 0., 0.]], [[1., 1., 1.], [1., 1., 1.]], [[1., 1., 1.], [1., 1., 1.]]], dtype=float) result_history = histories0.stack_histories(histories1) np.testing.assert_array_equal(expected_history, result_history.train_loss) np.testing.assert_array_equal(expected_history, result_history.val_loss) np.testing.assert_array_equal(expected_history, result_history.val_acc) np.testing.assert_array_equal(expected_history, result_history.test_acc) np.testing.assert_array_equal(histories0.sparsity, result_history.sparsity)
def test_get_all_random_experiment_histories_from_files(self): """ Should load two fake random_histories from npz files. """ histories = ExperimentHistories() histories.setup(1, 1, 1, 1, 1) with TemporaryDirectory() as tmp_dir_name: result_saver.save_experiment_histories_random_retrain( tmp_dir_name, 'prefix', 0, histories) result_saver.save_experiment_histories_random_retrain( tmp_dir_name, 'prefix', 1, histories) # load and validate histories from file experiment_path_prefix = f"{tmp_dir_name}/prefix" loaded_histories = result_loader.get_all_random_experiment_histories_from_files( experiment_path_prefix, 2) self.assertEqual(histories.stack_histories(histories), loaded_histories)