Skip to content

Commit

Permalink
Fix PT 1.8 compatibility issue (#580)
Browse files Browse the repository at this point in the history
* fix torch._six PT 1.8 comp issue

* update torch vision

* update torchvision version

* revert back torch versions

* add user agent

* fix expected od loss tensor shape

* fix unused imports

* move

* format

Co-authored-by: Jirka Borovec <jirka.borovec@seznam.cz>
  • Loading branch information
kaushikb11 and Borda authored Mar 9, 2021
1 parent 261a098 commit 4d194d4
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 15 deletions.
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
__pycache__/
*.py[cod]
*$py.class
data/

# C extensions
*.so
Expand Down Expand Up @@ -163,3 +164,8 @@ tests/test-reports/

# MLflow
mlruns/


# Downloaded Data through Scripts
VOCdevkit/
*.tar
3 changes: 2 additions & 1 deletion pl_bolts/datamodules/async_dataloader.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import collections.abc as container_abcs
import re
from queue import Queue
from threading import Thread
from typing import Any, Optional, Union

import torch
from torch._six import container_abcs, string_classes
from torch._six import string_classes
from torch.utils.data import DataLoader, Dataset


Expand Down
7 changes: 7 additions & 0 deletions pl_bolts/datasets/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import urllib

from pl_bolts.datasets.base_dataset import LightDataset
from pl_bolts.datasets.cifar10_dataset import CIFAR10, TrialCIFAR10
from pl_bolts.datasets.concat_dataset import ConcatDataset
Expand Down Expand Up @@ -31,3 +33,8 @@
"CIFAR10Mixed",
"SSLDatasetMixin",
]

# TorchVision hotfix https://github.com/pytorch/vision/issues/1938
opener = urllib.request.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
urllib.request.install_opener(opener)
3 changes: 3 additions & 0 deletions pl_bolts/datasets/imagenet_dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import os
import sys
import shutil
import sys # noqa F401
import tarfile
import tempfile
import zipfile
Expand Down Expand Up @@ -248,6 +249,8 @@ def extract_archive(from_path, to_path=None, remove_finished=False):
if to_path is None:
to_path = os.path.dirname(from_path)

PY3 = sys.version_info[0] == 3

if _is_tar(from_path):
with tarfile.open(from_path, 'r') as tar:
tar.extractall(path=to_path)
Expand Down
12 changes: 6 additions & 6 deletions tests/losses/test_object_detection.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@

@pytest.mark.parametrize(
"preds, target, expected_loss",
[(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[100, 100, 200, 200]]), torch.tensor([0.0]))]
[(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[100, 100, 200, 200]]), torch.tensor([[0.0]]))]
)
def test_iou_complete_overlap(preds, target, expected_loss):
torch.testing.assert_allclose(iou_loss(preds, target), expected_loss)


@pytest.mark.parametrize(
"preds, target, expected_loss", [
(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[100, 200, 200, 300]]), torch.tensor([1.0])),
(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[200, 200, 300, 300]]), torch.tensor([1.0])),
(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[100, 200, 200, 300]]), torch.tensor([[1.0]])),
(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[200, 200, 300, 300]]), torch.tensor([[1.0]])),
]
)
def test_iou_no_overlap(preds, target, expected_loss):
Expand All @@ -28,16 +28,16 @@ def test_iou_no_overlap(preds, target, expected_loss):

@pytest.mark.parametrize(
"preds, target, expected_loss",
[(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[100, 100, 200, 200]]), torch.tensor([0.0]))]
[(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[100, 100, 200, 200]]), torch.tensor([[0.0]]))]
)
def test_complete_overlap(preds, target, expected_loss):
torch.testing.assert_allclose(giou_loss(preds, target), expected_loss)


@pytest.mark.parametrize(
"preds, target, expected_loss", [
(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[100, 200, 200, 300]]), torch.tensor([1.0])),
(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[200, 200, 300, 300]]), torch.tensor([1.5])),
(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[100, 200, 200, 300]]), torch.tensor([[1.0]])),
(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[200, 200, 300, 300]]), torch.tensor([[1.5]])),
]
)
def test_no_overlap(preds, target, expected_loss):
Expand Down
12 changes: 6 additions & 6 deletions tests/metrics/test_object_detection.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@

@pytest.mark.parametrize(
"preds, target, expected_iou",
[(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[100, 100, 200, 200]]), torch.tensor([1.0]))]
[(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[100, 100, 200, 200]]), torch.tensor([[1.0]]))]
)
def test_iou_complete_overlap(preds, target, expected_iou):
torch.testing.assert_allclose(iou(preds, target), expected_iou)


@pytest.mark.parametrize(
"preds, target, expected_iou", [
(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[100, 200, 200, 300]]), torch.tensor([0.0])),
(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[200, 200, 300, 300]]), torch.tensor([0.0])),
(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[100, 200, 200, 300]]), torch.tensor([[0.0]])),
(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[200, 200, 300, 300]]), torch.tensor([[0.0]])),
]
)
def test_iou_no_overlap(preds, target, expected_iou):
Expand All @@ -39,16 +39,16 @@ def test_iou_multi(preds, target, expected_iou):

@pytest.mark.parametrize(
"preds, target, expected_giou",
[(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[100, 100, 200, 200]]), torch.tensor([1.0]))]
[(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[100, 100, 200, 200]]), torch.tensor([[1.0]]))]
)
def test_complete_overlap(preds, target, expected_giou):
torch.testing.assert_allclose(giou(preds, target), expected_giou)


@pytest.mark.parametrize(
"preds, target, expected_giou", [
(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[100, 200, 200, 300]]), torch.tensor([0.0])),
(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[200, 200, 300, 300]]), torch.tensor([-0.5])),
(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[100, 200, 200, 300]]), torch.tensor([[0.0]])),
(torch.tensor([[100, 100, 200, 200]]), torch.tensor([[200, 200, 300, 300]]), torch.tensor([[-0.5]])),
]
)
def test_no_overlap(preds, target, expected_giou):
Expand Down
9 changes: 7 additions & 2 deletions tests/models/test_classic_ml.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,13 @@ def test_linear_regression_model(tmpdir):
loader = DataLoader(SklearnDataset(X, y), batch_size=2)

model = LinearRegression(input_dim=2, learning_rate=0.5)
trainer = pl.Trainer(max_epochs=300, default_root_dir=tmpdir,
progress_bar_refresh_rate=0, logger=False, checkpoint_callback=False)
trainer = pl.Trainer(
max_epochs=300,
default_root_dir=tmpdir,
progress_bar_refresh_rate=0,
logger=False,
checkpoint_callback=False,
)
trainer.fit(
model,
loader,
Expand Down

0 comments on commit 4d194d4

Please sign in to comment.