예제 #1
0
    def test_load_undeepvo_checkpoint(self):
        filename = 'checkpoint_undeepvo.pth'
        # subprocess.run('checkpoint_download.sh')

        params = AttributeDict(
            lr=1e-4,
            beta1=0.9,
            beta2=0.99,
            lambda_position=0.01,
            lambda_rotation=0.1,
            batch_size=8,
        )

        pose_net = PoseNetResNet()
        depth_net = DepthNetResNet()

        params.update(scale_lr=5e-1,
                      initial_log_scale=4.59,
                      initial_log_min_depth=0.)

        model = ScaledUnsupervisedDepthModel(params,
                                             pose_net,
                                             depth_net,
                                             criterion=None)

        model_before = copy.deepcopy(model)
        load_undeepvo_checkpoint(model, filename)
        self.assertTrue(
            torch.any(model_before._pose_net._first_layer.weight !=
                      model._pose_net._first_layer.weight))
        self.assertTrue(
            torch.any(model_before._depth_net.skip_zero.weight !=
                      model._depth_net.skip_zero.weight))
예제 #2
0
    def test_unfreeze_last_layer(self):
        params = AttributeDict(
            lr=1e-4,
            beta1=0.9,
            beta2=0.99,
            lambda_position=0.01,
            lambda_rotation=0.1,
            batch_size=8,
        )

        pose_net = PoseNetResNet()
        depth_net = DepthNetResNet()

        params.update(scale_lr=5e-1,
                      initial_log_scale=4.59,
                      initial_log_min_depth=0.)

        model = ScaledUnsupervisedDepthModel(params,
                                             pose_net,
                                             depth_net,
                                             criterion=None)

        freeze_feature_extractor(model)
        unfreeze_last_layer(model)

        self.assertTrue(model._depth_net._last_conv.requires_grad)
        self.assertTrue(model._pose_net.rot3.requires_grad)
        self.assertTrue(model._pose_net.transl3.requires_grad)
예제 #3
0
    def training_step_and_backward_closure(
        self,
        split_batch: Any,
        batch_idx: int,
        opt_idx: int,
        optimizer: Optimizer,
        hiddens,
        return_result: AttributeDict,
    ) -> Optional[torch.Tensor]:

        result = self.training_step_and_backward(split_batch, batch_idx, opt_idx, optimizer, hiddens)
        if result is not None:
            return_result.update(result)
            return return_result.loss
def test_attribute_dict(tmpdir):
    # Test initialization
    inputs = {"key1": 1, "key2": "abc"}
    ad = AttributeDict(inputs)
    for key, value in inputs.items():
        assert getattr(ad, key) == value

    # Test adding new items
    ad = AttributeDict()
    ad.update({"key1": 1})
    assert ad.key1 == 1

    # Test updating existing items
    ad = AttributeDict({"key1": 1})
    ad.key1 = 123
    assert ad.key1 == 123