示例#1
0
    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([])
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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)