From 9a7dfed54a6f5588d6e6a177a2f4bb332fa77772 Mon Sep 17 00:00:00 2001 From: zhiqiang Date: Mon, 30 Nov 2020 10:46:02 +0800 Subject: [PATCH 1/8] Correcting incorrect types --- torchvision/models/detection/image_list.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/torchvision/models/detection/image_list.py b/torchvision/models/detection/image_list.py index dc8987a9f83..135b1a4b314 100644 --- a/torchvision/models/detection/image_list.py +++ b/torchvision/models/detection/image_list.py @@ -23,6 +23,6 @@ def __init__(self, tensors, image_sizes): self.image_sizes = image_sizes def to(self, device): - # type: (Device) -> ImageList # noqa + # type: (torch.device) -> ImageList cast_tensor = self.tensors.to(device) return ImageList(cast_tensor, self.image_sizes) From 7f660c01a757075f44687793785c4343fefca191 Mon Sep 17 00:00:00 2001 From: zhiqiang Date: Mon, 30 Nov 2020 10:50:22 +0800 Subject: [PATCH 2/8] Add missing type statement --- torchvision/models/detection/retinanet.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/torchvision/models/detection/retinanet.py b/torchvision/models/detection/retinanet.py index d46d39543f8..ee647ab3b0b 100644 --- a/torchvision/models/detection/retinanet.py +++ b/torchvision/models/detection/retinanet.py @@ -5,7 +5,7 @@ import torch import torch.nn as nn from torch import Tensor -from torch.jit.annotations import Dict, List, Tuple +from torch.jit.annotations import Dict, List, Tuple, Optional from ._utils import overwrite_eps from ..utils import load_state_dict_from_url From ee922e6286df730c45f0731f3cdf863d6e7b17b2 Mon Sep 17 00:00:00 2001 From: zhiqiang Date: Mon, 30 Nov 2020 11:23:55 +0800 Subject: [PATCH 3/8] Fix type annotations in unittest --- test/test_models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_models.py b/test/test_models.py index be994bf043b..16deecf6314 100644 --- a/test/test_models.py +++ b/test/test_models.py @@ -380,7 +380,7 @@ def test_generalizedrcnn_transform_repr(self): self.assertEqual(t.__repr__(), expected_string) -_devs = ["cpu", "cuda"] if torch.cuda.is_available() else ["cpu"] +_devs = [torch.device("cpu"), torch.device("cuda")] if torch.cuda.is_available() else [torch.device("cpu")] for model_name in get_available_classification_models(): From 825f7762d9b0f224b66f052156534060e318f4ae Mon Sep 17 00:00:00 2001 From: zhiqiang Date: Mon, 30 Nov 2020 11:33:46 +0800 Subject: [PATCH 4/8] Fix TypeError --- test/test_models.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/test_models.py b/test/test_models.py index 16deecf6314..c50be5c7b75 100644 --- a/test/test_models.py +++ b/test/test_models.py @@ -393,7 +393,7 @@ def do_test(self, model_name=model_name, dev=dev): input_shape = (1, 3, 299, 299) self._test_classification_model(model_name, input_shape, dev) - setattr(ModelTester, "test_" + model_name + "_" + dev, do_test) + setattr(ModelTester, "test_" + model_name + "_" + str(dev), do_test) for model_name in get_available_segmentation_models(): @@ -403,7 +403,7 @@ def do_test(self, model_name=model_name, dev=dev): def do_test(self, model_name=model_name, dev=dev): self._test_segmentation_model(model_name, dev) - setattr(ModelTester, "test_" + model_name + "_" + dev, do_test) + setattr(ModelTester, "test_" + model_name + "_" + str(dev), do_test) for model_name in get_available_detection_models(): @@ -413,7 +413,7 @@ def do_test(self, model_name=model_name, dev=dev): def do_test(self, model_name=model_name, dev=dev): self._test_detection_model(model_name, dev) - setattr(ModelTester, "test_" + model_name + "_" + dev, do_test) + setattr(ModelTester, "test_" + model_name + "_" + str(dev), do_test) def do_validation_test(self, model_name=model_name): self._test_detection_model_validation(model_name) @@ -426,7 +426,7 @@ def do_validation_test(self, model_name=model_name): def do_test(self, model_name=model_name, dev=dev): self._test_video_model(model_name, dev) - setattr(ModelTester, "test_" + model_name + "_" + dev, do_test) + setattr(ModelTester, "test_" + model_name + "_" + str(dev), do_test) if __name__ == '__main__': unittest.main() From 0f6e35d8f539d3deaa6adc1d52b60b4ac9fad0af Mon Sep 17 00:00:00 2001 From: zhiqiang Date: Mon, 30 Nov 2020 11:48:17 +0800 Subject: [PATCH 5/8] Fix TypeError --- test/test_models.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/test_models.py b/test/test_models.py index c50be5c7b75..419d7b67445 100644 --- a/test/test_models.py +++ b/test/test_models.py @@ -70,7 +70,7 @@ def _test_classification_model(self, name, input_shape, dev): # RNG always on CPU, to ensure x in cuda tests is bitwise identical to x in cpu tests x = torch.rand(input_shape).to(device=dev) out = model(x) - self.assertExpected(out.cpu(), prec=0.1, strip_suffix="_" + dev) + self.assertExpected(out.cpu(), prec=0.1, strip_suffix=f"_{dev}") self.assertEqual(out.shape[-1], 50) self.check_jit_scriptable(model, (x,), unwrapper=script_model_unwrapper.get(name, None)) @@ -79,7 +79,7 @@ def _test_classification_model(self, name, input_shape, dev): out = model(x) # See autocast_flaky_numerics comment at top of file. if name not in autocast_flaky_numerics: - self.assertExpected(out.cpu(), prec=0.1, strip_suffix="_" + dev) + self.assertExpected(out.cpu(), prec=0.1, strip_suffix=f"_{dev}") self.assertEqual(out.shape[-1], 50) def _test_segmentation_model(self, name, dev): @@ -143,7 +143,7 @@ def compute_mean_std(tensor): output = map_nested_tensor_object(out, tensor_map_fn=compact) prec = 0.01 - strip_suffix = "_" + dev + strip_suffix = f"_{dev}" try: # We first try to assert the entire output if possible. This is not # only the best way to assert results but also handles the cases @@ -393,7 +393,7 @@ def do_test(self, model_name=model_name, dev=dev): input_shape = (1, 3, 299, 299) self._test_classification_model(model_name, input_shape, dev) - setattr(ModelTester, "test_" + model_name + "_" + str(dev), do_test) + setattr(ModelTester, f"test_{model_name}_{dev}", do_test) for model_name in get_available_segmentation_models(): @@ -403,7 +403,7 @@ def do_test(self, model_name=model_name, dev=dev): def do_test(self, model_name=model_name, dev=dev): self._test_segmentation_model(model_name, dev) - setattr(ModelTester, "test_" + model_name + "_" + str(dev), do_test) + setattr(ModelTester, f"test_{model_name}_{dev}", do_test) for model_name in get_available_detection_models(): @@ -413,7 +413,7 @@ def do_test(self, model_name=model_name, dev=dev): def do_test(self, model_name=model_name, dev=dev): self._test_detection_model(model_name, dev) - setattr(ModelTester, "test_" + model_name + "_" + str(dev), do_test) + setattr(ModelTester, f"test_{model_name}_{dev}", do_test) def do_validation_test(self, model_name=model_name): self._test_detection_model_validation(model_name) @@ -426,7 +426,7 @@ def do_validation_test(self, model_name=model_name): def do_test(self, model_name=model_name, dev=dev): self._test_video_model(model_name, dev) - setattr(ModelTester, "test_" + model_name + "_" + str(dev), do_test) + setattr(ModelTester, f"test_{model_name}_{dev}", do_test) if __name__ == '__main__': unittest.main() From f5f9aef5c518b2bf423fa70de46a1379b6259f13 Mon Sep 17 00:00:00 2001 From: zhiqiang Date: Mon, 30 Nov 2020 11:52:23 +0800 Subject: [PATCH 6/8] Fix type equality judgment --- test/test_models.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/test_models.py b/test/test_models.py index 419d7b67445..893ed8ab38e 100644 --- a/test/test_models.py +++ b/test/test_models.py @@ -74,7 +74,7 @@ def _test_classification_model(self, name, input_shape, dev): self.assertEqual(out.shape[-1], 50) self.check_jit_scriptable(model, (x,), unwrapper=script_model_unwrapper.get(name, None)) - if dev == "cuda": + if dev == torch.device("cuda"): with torch.cuda.amp.autocast(): out = model(x) # See autocast_flaky_numerics comment at top of file. @@ -94,7 +94,7 @@ def _test_segmentation_model(self, name, dev): self.assertEqual(tuple(out["out"].shape), (1, 50, 300, 300)) self.check_jit_scriptable(model, (x,), unwrapper=script_model_unwrapper.get(name, None)) - if dev == "cuda": + if dev == torch.device("cuda"): with torch.cuda.amp.autocast(): out = model(x) self.assertEqual(tuple(out["out"].shape), (1, 50, 300, 300)) @@ -169,7 +169,7 @@ def compute_mean_std(tensor): full_validation = check_out(out) self.check_jit_scriptable(model, ([x],), unwrapper=script_model_unwrapper.get(name, None)) - if dev == "cuda": + if dev == torch.device("cuda"): with torch.cuda.amp.autocast(): out = model(model_input) # See autocast_flaky_numerics comment at top of file. @@ -220,7 +220,7 @@ def _test_video_model(self, name, dev): self.check_jit_scriptable(model, (x,), unwrapper=script_model_unwrapper.get(name, None)) self.assertEqual(out.shape[-1], 50) - if dev == "cuda": + if dev == torch.device("cuda"): with torch.cuda.amp.autocast(): out = model(x) self.assertEqual(out.shape[-1], 50) From 25cb03224a51a0496320b0b9bfe2e9f9f439befa Mon Sep 17 00:00:00 2001 From: zhiqiang Date: Mon, 30 Nov 2020 12:09:57 +0800 Subject: [PATCH 7/8] Fix recursive compile --- torchvision/models/detection/image_list.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/torchvision/models/detection/image_list.py b/torchvision/models/detection/image_list.py index 135b1a4b314..2c7e476dcf1 100644 --- a/torchvision/models/detection/image_list.py +++ b/torchvision/models/detection/image_list.py @@ -23,6 +23,6 @@ def __init__(self, tensors, image_sizes): self.image_sizes = image_sizes def to(self, device): - # type: (torch.device) -> ImageList + # type: (torch.device) -> ImageList # noqa cast_tensor = self.tensors.to(device) return ImageList(cast_tensor, self.image_sizes) From ed80970cee51c1cffeee74e7ea0bf3b1157ffc80 Mon Sep 17 00:00:00 2001 From: Vasilis Vryniotis Date: Mon, 30 Nov 2020 09:38:19 +0000 Subject: [PATCH 8/8] Use string for class name annotation. --- torchvision/models/detection/image_list.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/torchvision/models/detection/image_list.py b/torchvision/models/detection/image_list.py index 2c7e476dcf1..21e326573bf 100644 --- a/torchvision/models/detection/image_list.py +++ b/torchvision/models/detection/image_list.py @@ -12,8 +12,7 @@ class ImageList(object): and storing in a field the original sizes of each image """ - def __init__(self, tensors, image_sizes): - # type: (Tensor, List[Tuple[int, int]]) -> None + def __init__(self, tensors: Tensor, image_sizes: List[Tuple[int, int]]): """ Arguments: tensors (tensor) @@ -22,7 +21,6 @@ def __init__(self, tensors, image_sizes): self.tensors = tensors self.image_sizes = image_sizes - def to(self, device): - # type: (torch.device) -> ImageList # noqa + def to(self, device: torch.device) -> 'ImageList': cast_tensor = self.tensors.to(device) return ImageList(cast_tensor, self.image_sizes)