예제 #1
0
def _test_tensor_inf_check_with_inf_model(
    inf_model_optimizer, inf_model, dataloader, run_training
):
    """TODO: design a test case with inf gradient values"""
    torcheck.register(inf_model_optimizer)
    torcheck.add_tensor_inf_check(
        inf_model.fc1.weight, tensor_name="fc1.weight", module_name="NeuralNet"
    )
    torcheck.add_tensor_inf_check(
        inf_model.fc1.bias, tensor_name="fc1.bias", module_name="NeuralNet"
    )
    torcheck.add_tensor_inf_check(
        inf_model.fc2.weight, tensor_name="fc2.weight", module_name="NeuralNet"
    )
    torcheck.add_tensor_inf_check(
        inf_model.fc2.bias, tensor_name="fc2.bias", module_name="NeuralNet"
    )
    with pytest.raises(
        RuntimeError,
        match=(
            r"Module NeuralNet's fc1\.weight contains inf\.\n"
            r".*fc1.bias contains inf\.\n.*fc2.weight contains inf\.\n"
            r".*fc2.bias contains inf"
        ),
    ):
        run_training(inf_model, dataloader, inf_model_optimizer)
예제 #2
0
def test_disable(unchanging_model_optimizer, unchanging_model, dataloader,
                 run_training):
    torcheck.register(unchanging_model_optimizer)
    torcheck.add_module_changing_check(unchanging_model,
                                       module_name="NeuralNet")
    torcheck.disable()
    run_training(unchanging_model, dataloader, unchanging_model_optimizer)
예제 #3
0
def test_tensor_nan_check_with_nan_model(
    nan_model_optimizer, nan_model, dataloader, run_training
):
    torcheck.register(nan_model_optimizer)
    torcheck.add_tensor_nan_check(
        nan_model.fc1.weight, tensor_name="fc1.weight", module_name="NeuralNet"
    )
    torcheck.add_tensor_nan_check(
        nan_model.fc1.bias, tensor_name="fc1.bias", module_name="NeuralNet"
    )
    torcheck.add_tensor_nan_check(
        nan_model.fc2.weight, tensor_name="fc2.weight", module_name="NeuralNet"
    )
    torcheck.add_tensor_nan_check(
        nan_model.fc2.bias, tensor_name="fc2.bias", module_name="NeuralNet"
    )
    with pytest.raises(
        RuntimeError,
        match=(
            r"Module NeuralNet's fc1\.weight contains NaN\.\n"
            r".*fc1.bias contains NaN\.\n.*fc2.weight contains NaN\.\n"
            r".*fc2.bias contains NaN"
        ),
    ):
        run_training(nan_model, dataloader, nan_model_optimizer)
예제 #4
0
def test_module_nan_check_with_nan_model(nan_model_optimizer, nan_model,
                                         dataloader, run_training):
    torcheck.register(nan_model_optimizer)
    torcheck.add_module_nan_check(nan_model, module_name="NeuralNet")
    with pytest.raises(RuntimeError,
                       match=r"Module NeuralNet's output contains NaN"):
        run_training(nan_model, dataloader, nan_model_optimizer)
예제 #5
0
def test_module_unchanging_check_with_unchanging_model(
    unchanging_model_optimizer, unchanging_model, dataloader, run_training
):
    torcheck.register(unchanging_model_optimizer)
    torcheck.add_module_unchanging_check(
        unchanging_model.fc1, module_name="First Layer"
    )
    run_training(unchanging_model, dataloader, unchanging_model_optimizer)
예제 #6
0
def test_tensor_unchanging_check_with_unchanging_model(
    unchanging_model_optimizer, unchanging_model, dataloader, run_training
):
    torcheck.register(unchanging_model_optimizer)
    torcheck.add_tensor_unchanging_check(
        unchanging_model.fc1.weight, tensor_name="fc1.weight", module_name="NeuralNet"
    )
    torcheck.add_tensor_unchanging_check(
        unchanging_model.fc1.bias, tensor_name="fc1.bias", module_name="NeuralNet"
    )
    run_training(unchanging_model, dataloader, unchanging_model_optimizer)
예제 #7
0
def test_module_unchanging_check_with_changing_model(
    changing_model_optimizer, changing_model, dataloader, run_training
):
    torcheck.register(changing_model_optimizer)
    torcheck.add_module_unchanging_check(changing_model, module_name="NeuralNet")
    with pytest.raises(
        RuntimeError,
        match=(
            r"Module NeuralNet's fc1\.weight should not change\."
            r"(.|\n)*fc2\.weight should not change"
        ),
    ):
        run_training(changing_model, dataloader, changing_model_optimizer)
예제 #8
0
def test_module_changing_check_with_unchanging_model(
    unchanging_model_optimizer, unchanging_model, dataloader, run_training
):
    torcheck.register(unchanging_model_optimizer)
    torcheck.add_module_changing_check(unchanging_model, module_name="NeuralNet")
    with pytest.raises(
        RuntimeError,
        match=(
            r"Module NeuralNet's fc1\.weight should change\.\n"
            r".*fc1.bias should change"
        ),
    ):
        run_training(unchanging_model, dataloader, unchanging_model_optimizer)
예제 #9
0
def test_module_multiple_check_with_correct_model(correct_model_optimizer,
                                                  correct_model, dataloader,
                                                  run_training):
    torcheck.register(correct_model_optimizer)
    torcheck.add_module(
        correct_model,
        module_name="NeuralNet",
        changing=True,
        output_range=(0, 1),
        negate_range=True,
        check_nan=True,
        check_inf=True,
    )
    run_training(correct_model, dataloader, correct_model_optimizer)
예제 #10
0
def test_verbose_on(
    unchanging_model_optimizer, unchanging_model, dataloader, run_training
):
    torcheck.verbose_on()
    torcheck.register(unchanging_model_optimizer)
    torcheck.add_module_changing_check(unchanging_model, module_name="NeuralNet")
    with pytest.raises(
        RuntimeError,
        match=(
            r"Module NeuralNet's fc1\.weight should change\.\n"
            r"The tensor is:(.|\n)*"
            r"fc1\.bias should change\.\n"
            r"The tensor is:(.|\n)*"
        ),
    ):
        run_training(unchanging_model, dataloader, unchanging_model_optimizer)
예제 #11
0
def test_tensor_inf_check_with_noinf_model(
    noinf_model_optimizer, noinf_model, dataloader, run_training
):
    torcheck.register(noinf_model_optimizer)
    torcheck.add_tensor_inf_check(
        noinf_model.fc1.weight, tensor_name="fc1.weight", module_name="NeuralNet"
    )
    torcheck.add_tensor_inf_check(
        noinf_model.fc1.bias, tensor_name="fc1.bias", module_name="NeuralNet"
    )
    torcheck.add_tensor_inf_check(
        noinf_model.fc2.weight, tensor_name="fc2.weight", module_name="NeuralNet"
    )
    torcheck.add_tensor_inf_check(
        noinf_model.fc2.bias, tensor_name="fc2.bias", module_name="NeuralNet"
    )
    run_training(noinf_model, dataloader, noinf_model_optimizer)
예제 #12
0
def test_tensor_unchanging_check_with_changing_model(
    changing_model_optimizer, changing_model, dataloader, run_training
):
    torcheck.register(changing_model_optimizer)
    torcheck.add_tensor_unchanging_check(
        changing_model.fc1.weight, tensor_name="fc1.weight", module_name="NeuralNet"
    )
    torcheck.add_tensor_unchanging_check(
        changing_model.fc1.bias, tensor_name="fc1.bias", module_name="NeuralNet"
    )
    with pytest.raises(
        RuntimeError,
        match=(
            r"Module NeuralNet's fc1\.weight should not change\.\n"
            r".*fc1.bias should not change"
        ),
    ):
        run_training(changing_model, dataloader, changing_model_optimizer)
예제 #13
0
def test_tensor_multiple_check_with_correct_model(
    correct_model_optimizer, correct_model, dataloader, run_training
):
    torcheck.register(correct_model_optimizer)
    torcheck.add_tensor(
        correct_model.fc1.weight,
        tensor_name="fc1.weight",
        module_name="NeuralNet",
        changing=True,
        check_nan=True,
        check_inf=True,
    )
    torcheck.add_tensor(
        correct_model.fc1.bias,
        tensor_name="fc1.bias",
        module_name="NeuralNet",
        changing=True,
        check_nan=True,
        check_inf=True,
    )
    run_training(correct_model, dataloader, correct_model_optimizer)
예제 #14
0
def test_module_changing_check_with_changing_model(
    changing_model_optimizer, changing_model, dataloader, run_training
):
    torcheck.register(changing_model_optimizer)
    torcheck.add_module_changing_check(changing_model, module_name="NeuralNet")
    run_training(changing_model, dataloader, changing_model_optimizer)
예제 #15
0
def test_module_inf_check_with_noinf_model(noinf_model_optimizer, noinf_model,
                                           dataloader, run_training):
    torcheck.register(noinf_model_optimizer)
    torcheck.add_module_inf_check(noinf_model, module_name="NeuralNet")
    run_training(noinf_model, dataloader, noinf_model_optimizer)