internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: pytorch/vision

Issue:
'fillcolor' accepts tuple
According to [here](https://discuss.pytorch.org/t/why-must-fillcolor-be-an-int-torchvision-transforms-randomaffine/46775), we can pass an RGB color (a tuple) or a greyscale color (an int) to `transforms.RandomAffine`. But the [documentation](https://pytorch.org/docs/stable/torchvision/transforms.html#torchvision.transforms.RandomAffine) says the `fillcolor` argument can only be an int. This might need to be updated. 


Discussion:

Resolving patch:
diff --git a/torchvision/transforms/transforms.py b/torchvision/transforms/transforms.py
--- a/torchvision/transforms/transforms.py
+++ b/torchvision/transforms/transforms.py
@@ -1016,7 +1016,8 @@ class RandomAffine(object):
         resample ({PIL.Image.NEAREST, PIL.Image.BILINEAR, PIL.Image.BICUBIC}, optional):
             An optional resampling filter. See `filters`_ for more information.
             If omitted, or if the image has mode "1" or "P", it is set to PIL.Image.NEAREST.
-        fillcolor (int): Optional fill color for the area outside the transform in the output image. (Pillow>=5.0.0)
+        fillcolor (tuple or int): Optional fill color (Tuple for RGB Image And int for grayscale) for the area
+            outside the transform in the output image.(Pillow>=5.0.0)
 
     .. _filters: https://pillow.readthedocs.io/en/latest/handbook/concepts.html#filters
 


Test patch:
Repository: pytorch/vision

Issue:
MaskRCNN: Inconsistency between documentation and output
As per mask RCNN documentation,  the predicted masks have the shape: 
masks (Tensor[N, H, W]):

however as per the tutorial, https://colab.research.google.com/github/pytorch/vision/blob/temp-tutorial/tutorials/torchvision_finetuning_instance_segmentation.ipynb#scrollTo=M58J3O9OtT1G, 
and the results/output i see from the model, the masks have the shape: [N, 1, H, W]

The masks are predicted as [N, 1, H, W]
i.e. i output masks have 4 dim, whereas documentation has 3dim..


Discussion:
Yes, this is a problem with the documentation.

Could you send a PR fixing it?

Resolving patch:
diff --git a/torchvision/models/detection/mask_rcnn.py b/torchvision/models/detection/mask_rcnn.py
--- a/torchvision/models/detection/mask_rcnn.py
+++ b/torchvision/models/detection/mask_rcnn.py
@@ -31,7 +31,7 @@ class MaskRCNN(FasterRCNN):
         - boxes (Tensor[N, 4]): the ground-truth boxes in [x0, y0, x1, y1] format, with values
           between 0 and H and 0 and W
         - labels (Tensor[N]): the class label for each ground-truth box
-        - masks (Tensor[N, H, W]): the segmentation binary masks for each instance
+        - masks (Tensor[N, 1, H, W]): the segmentation binary masks for each instance
 
     The model returns a Dict[Tensor] during training, containing the classification and regression
     losses for both the RPN and the R-CNN, and the mask loss.
@@ -43,7 +43,7 @@ class MaskRCNN(FasterRCNN):
           0 and H and 0 and W
         - labels (Tensor[N]): the predicted labels for each image
         - scores (Tensor[N]): the scores or each prediction
-        - masks (Tensor[N, H, W]): the predicted masks for each instance, in 0-1 range. In order to
+        - masks (Tensor[N, 1, H, W]): the predicted masks for each instance, in 0-1 range. In order to
           obtain the final segmentation masks, the soft masks can be thresholded, generally
           with a value of 0.5 (mask >= 0.5)
 


Test patch:
Repository: pytorch/vision

Issue:
torchvision.transforms.functional.to_pil_image
The function, torchvision.transforms.functional.to_pil_image, transforms FloatTensor to uint8 internally. Hence, it is impossible to use mode = 'F'. This can be frustrating when dealing with high bit-depth images.

I was working with spectrograms and the spectrograms had high resolution (more than 8 bits per channel).

# Problem Demonstration 1
Here is a demonstration of what was happening.

import torch
import torchvision.transforms
X1 = torch.Tensor(10, 10)
X1.normal_(0.5, 0.5)
print(X1.dtype)
X2 = torchvision.transforms.functional.to_pil_image(X1, mode = 'F') # This is going to be error.
Output: ValueError: Incorrect mode (F) supplied for input type <class 'numpy.dtype'>. Should be L

# Problem Demonstration 2
If we use mode L, we have

X2 = torchvision.transforms.functional.to_pil_image(X1)
X3 = torchvision.transforms.functional.to_tensor(X2)
print((X1 - X3).abs().max())
Output: tensor(2.0097)

This means that X3 is significantly different from X1.

# Expected Behavior
This is what it should be

from PIL import Image
X4 = Image.fromarray(X1.numpy(), mode = 'F')
X5 = torchvision.transforms.functional.to_tensor(X4)
print((X1 - X5).abs().max())
Output: tensor(0.)


Discussion:

Resolving patch:
diff --git a/torchvision/transforms/functional.py b/torchvision/transforms/functional.py
--- a/torchvision/transforms/functional.py
+++ b/torchvision/transforms/functional.py
@@ -135,7 +135,7 @@ def to_pil_image(pic, mode=None):
             pic = np.expand_dims(pic, 2)
 
     npimg = pic
-    if isinstance(pic, torch.FloatTensor):
+    if isinstance(pic, torch.FloatTensor) and mode != 'F':
         pic = pic.mul(255).byte()
     if isinstance(pic, torch.Tensor):
         npimg = np.transpose(pic.numpy(), (1, 2, 0))


Test patch:
diff --git a/test/test_transforms.py b/test/test_transforms.py
--- a/test/test_transforms.py
+++ b/test/test_transforms.py
@@ -528,6 +528,11 @@ def test_1_channel_tensor_to_pil_image(self):
                 img = transform(img_data)
                 assert img.mode == mode
                 assert np.allclose(expected_output, to_tensor(img).numpy())
+        # 'F' mode for torch.FloatTensor
+        img_F_mode = transforms.ToPILImage(mode='F')(img_data_float)
+        assert img_F_mode.mode == 'F'
+        assert np.allclose(np.array(Image.fromarray(img_data_float.squeeze(0).numpy(), mode='F')),
+                           np.array(img_F_mode))
 
     def test_1_channel_ndarray_to_pil_image(self):
         img_data_float = torch.Tensor(4, 4, 1).uniform_().numpy()
Repository: pytorch/vision

Issue:
A small bug in ImageNet Dataset Implementation
Currently, all values (i.e., index) in the `class_to_idx` and `wnid_to_idx` of `ImageNet` are 0.
The current code is as follows where `idcs` is wrong since it will fetch the indices of images instead of classes.
```python
        idcs = [idx for _, idx in self.imgs]
        self.wnids = self.classes
        self.wnid_to_idx = {wnid: idx for idx, wnid in zip(idcs, self.wnids)}
        self.classes = [wnid_to_classes[wnid] for wnid in self.wnids]
        self.class_to_idx = {cls: idx
                             for clss, idx in zip(self.classes, idcs)
                             for cls in clss}
```
A simple fix will be,
```python
        self.wnids = self.classes
        self.wnid_to_idx = self.class_to_idx   # ImageFolder handles it well
        self.classes, self.class_to_idx = [], {}
        for wnid, idx in self.wnid_to_idx.items():
            classes = wnid_to_classes[wnid]
            self.classes.append(classes)
            for c in classes:
                self.class_to_idx[c] = idx
```


Discussion:

Resolving patch:
diff --git a/torchvision/datasets/imagenet.py b/torchvision/datasets/imagenet.py
--- a/torchvision/datasets/imagenet.py
+++ b/torchvision/datasets/imagenet.py
@@ -38,7 +38,7 @@ class ImageNet(ImageFolder):
         loader (callable, optional): A function to load an image given its path.
 
      Attributes:
-        classes (list): List of the class names.
+        classes (list): List of the class name tuples.
         class_to_idx (dict): Dict with items (class_name, class_index).
         wnids (list): List of the WordNet IDs.
         wnid_to_idx (dict): Dict with items (wordnet_id, class_index).
@@ -57,12 +57,11 @@ def __init__(self, root, split='train', download=False, **kwargs):
         super(ImageNet, self).__init__(self.split_folder, **kwargs)
         self.root = root
 
-        idcs = [idx for _, idx in self.imgs]
         self.wnids = self.classes
-        self.wnid_to_idx = {wnid: idx for idx, wnid in zip(idcs, self.wnids)}
+        self.wnid_to_idx = self.class_to_idx
         self.classes = [wnid_to_classes[wnid] for wnid in self.wnids]
         self.class_to_idx = {cls: idx
-                             for clss, idx in zip(self.classes, idcs)
+                             for idx, clss in enumerate(self.classes)
                              for cls in clss}
 
     def download(self):


Test patch:
Repository: pytorch/vision

Issue:
EMNIST download url changed
https://github.com/pytorch/vision/blob/26c9630bc7add88685400e54457203816c06e750/torchvision/datasets/mnist.py#L230

EMNIST url changed to 
`https://cloudstor.aarnet.edu.au/plus/s/ZNmuFiuQTqZlu9W/download`


Discussion:

Resolving patch:
diff --git a/torchvision/datasets/mnist.py b/torchvision/datasets/mnist.py
--- a/torchvision/datasets/mnist.py
+++ b/torchvision/datasets/mnist.py
@@ -227,7 +227,7 @@ class EMNIST(MNIST):
             target and transforms it.
     """
     # Updated URL from https://www.westernsydney.edu.au/bens/home/reproducible_research/emnist
-    url = 'https://cloudstor.aarnet.edu.au/plus/index.php/s/54h3OuGJhFLwAlQ/download'
+    url = 'https://cloudstor.aarnet.edu.au/plus/s/ZNmuFiuQTqZlu9W/download'
     splits = ('byclass', 'bymerge', 'balanced', 'letters', 'digits', 'mnist')
 
     def __init__(self, root, split, **kwargs):


Test patch:
Repository: pytorch/vision

Issue:
EMNIST download url changed
https://github.com/pytorch/vision/blob/26c9630bc7add88685400e54457203816c06e750/torchvision/datasets/mnist.py#L230

EMNIST url changed to 
`https://cloudstor.aarnet.edu.au/plus/s/ZNmuFiuQTqZlu9W/download`


Discussion:
Neither of these URLs is correct.
@pmeier can you have a look?

The link in https://www.nist.gov/node/1298471/emnist-dataset doesn't work anymore (i.e., http://www.itl.nist.gov/iaui/vip/cs_links/EMNIST/gzip.zip) ?
This is weird. At the time of creating the PR the link was working. Even the [official website of EMNIST](https://www.westernsydney.edu.au/bens/home/reproducible_research/emnist) lists this link. I'll look into it.

Resolving patch:
diff --git a/torchvision/datasets/mnist.py b/torchvision/datasets/mnist.py
--- a/torchvision/datasets/mnist.py
+++ b/torchvision/datasets/mnist.py
@@ -226,8 +226,11 @@ class EMNIST(MNIST):
         target_transform (callable, optional): A function/transform that takes in the
             target and transforms it.
     """
-    # Updated URL from https://www.westernsydney.edu.au/bens/home/reproducible_research/emnist
-    url = 'https://cloudstor.aarnet.edu.au/plus/s/ZNmuFiuQTqZlu9W/download'
+    # Updated URL from https://www.nist.gov/node/1298471/emnist-dataset since the
+    # _official_ download link
+    # https://cloudstor.aarnet.edu.au/plus/s/ZNmuFiuQTqZlu9W/download
+    # is (currently) unavailable
+    url = 'http://www.itl.nist.gov/iaui/vip/cs_links/EMNIST/gzip.zip'
     splits = ('byclass', 'bymerge', 'balanced', 'letters', 'digits', 'mnist')
 
     def __init__(self, root, split, **kwargs):


Test patch:
Repository: pytorch/vision

Issue:
Deprecate PILLOW_VERSION
torchvision now uses PILLOW_VERSION
https://github.com/pytorch/vision/blob/1e857d93c8de081e61695dd43e6f06e3e7c2b0a2/torchvision/transforms/functional.py#L5

However, this constant is deprecated in Pillow 5.2, and soon to be removed completely: https://github.com/python-pillow/Pillow/blob/master/CHANGES.rst#700-unreleased


Discussion:

Resolving patch:
diff --git a/torchvision/transforms/functional.py b/torchvision/transforms/functional.py
--- a/torchvision/transforms/functional.py
+++ b/torchvision/transforms/functional.py
@@ -2,7 +2,7 @@
 import torch
 import sys
 import math
-from PIL import Image, ImageOps, ImageEnhance, PILLOW_VERSION
+from PIL import Image, ImageOps, ImageEnhance, __version__ as PILLOW_VERSION
 try:
     import accimage
 except ImportError:


Test patch:
Repository: pytorch/vision

Issue:
Video dataset can't instantiate correctly on windows.
When I use the UCF101 class to instantiate the ucf-101 dataset, I get an error, the platform is Windows10,and the code is
 `ucf101_train = UCF101(root="./Datasets/UCF-101", annotation_path="./Datasets/UCF101TrainTestSplits-RecognitionTask/ucfTrainTestlist", frames_per_clip=16, train=True)`
return 
`AttributeError: Can't pickle local object 'VideoClips._compute_frame_pts.<locals>.DS'`
Looking forward to someone who can help solve this problem.


Discussion:
This happens because ForkingPickler is used on Windows when launching a DataLoader with multiple workers. A dummy dataset is passed to a `DataLoader` inside `VideoClips`, which is an instance of the `DS` class defined in `_compute_frame_pts`, and instances of locally-defined classes cannot be pickled.

This was also the cause of some test failures in #1229

Resolving patch:
diff --git a/torchvision/datasets/video_utils.py b/torchvision/datasets/video_utils.py
--- a/torchvision/datasets/video_utils.py
+++ b/torchvision/datasets/video_utils.py
@@ -43,6 +43,21 @@ def unfold(tensor, size, step, dilation=1):
     return torch.as_strided(tensor, new_size, new_stride)
 
 
+class _DummyDataset(object):
+    """
+    Dummy dataset used for DataLoader in VideoClips.
+    Defined at top level so it can be pickled when forking.
+    """
+    def __init__(self, x):
+        self.x = x
+
+    def __len__(self):
+        return len(self.x)
+
+    def __getitem__(self, idx):
+        return read_video_timestamps(self.x[idx])
+
+
 class VideoClips(object):
     """
     Given a list of video files, computes all consecutive subvideos of size
@@ -95,19 +110,9 @@ def _compute_frame_pts(self):
 
         # strategy: use a DataLoader to parallelize read_video_timestamps
         # so need to create a dummy dataset first
-        class DS(object):
-            def __init__(self, x):
-                self.x = x
-
-            def __len__(self):
-                return len(self.x)
-
-            def __getitem__(self, idx):
-                return read_video_timestamps(self.x[idx])
-
         import torch.utils.data
         dl = torch.utils.data.DataLoader(
-            DS(self.video_paths),
+            _DummyDataset(self.video_paths),
             batch_size=16,
             num_workers=self.num_workers,
             collate_fn=lambda x: x)


Test patch:
Repository: pytorch/vision

Issue:
EMNIST classes attribute is wrong
Reported by @mickypaganini 

The `classes` attribute of EMNIST dataset does not take into account the `split` argument. From the original EMNIST dataset https://www.nist.gov/itl/products-and-services/emnist-dataset

> There are six different splits provided in this dataset. A short summary of the dataset is provided below:
> 
> EMNIST ByClass: 814,255 characters. 62 unbalanced classes.
> EMNIST ByMerge: 814,255 characters. 47 unbalanced classes.
> EMNIST Balanced:  131,600 characters. 47 balanced classes.
> EMNIST Letters: 145,600 characters. 26 balanced classes.
> EMNIST Digits: 280,000 characters. 10 balanced classes.
> EMNIST MNIST: 70,000 characters. 10 balanced classes.

As of now, `classes` always returns the default for MNIST
```
['0 - zero',
 '1 - one',
 '2 - two',
 '3 - three',
 '4 - four',
 '5 - five',
 '6 - six',
 '7 - seven',
 '8 - eight',
 '9 - nine']
```

We need to make `classes` depend on `split`, and return the correct class names for each split.


Discussion:

Resolving patch:
diff --git a/torchvision/datasets/mnist.py b/torchvision/datasets/mnist.py
--- a/torchvision/datasets/mnist.py
+++ b/torchvision/datasets/mnist.py
@@ -7,6 +7,7 @@
 import numpy as np
 import torch
 import codecs
+import string
 from .utils import download_url, download_and_extract_archive, extract_archive, \
     makedir_exist_ok, verify_str_arg
 
@@ -239,12 +240,24 @@ class EMNIST(MNIST):
     url = 'http://www.itl.nist.gov/iaui/vip/cs_links/EMNIST/gzip.zip'
     md5 = "58c8d27c78d21e728a6bc7b3cc06412e"
     splits = ('byclass', 'bymerge', 'balanced', 'letters', 'digits', 'mnist')
+    # Merged Classes assumes Same structure for both uppercase and lowercase version
+    _merged_classes = set(['C', 'I', 'J', 'K', 'L', 'M', 'O', 'P', 'S', 'U', 'V', 'W', 'X', 'Y', 'Z'])
+    _all_classes = set(list(string.digits + string.ascii_letters))
+    classes_split_dict = {
+        'byclass': list(_all_classes),
+        'bymerge': sorted(list(_all_classes - _merged_classes)),
+        'balanced': sorted(list(_all_classes - _merged_classes)),
+        'letters': list(string.ascii_lowercase),
+        'digits': list(string.digits),
+        'mnist': list(string.digits),
+    }
 
     def __init__(self, root, split, **kwargs):
         self.split = verify_str_arg(split, "split", self.splits)
         self.training_file = self._training_file(split)
         self.test_file = self._test_file(split)
         super(EMNIST, self).__init__(root, **kwargs)
+        self.classes = self.classes_split_dict[self.split]
 
     @staticmethod
     def _training_file(split):


Test patch:
Repository: pytorch/vision

Issue:
UserWarning: 'layers' was found in ScriptModule constants
## 🐛 Bug

Creating `torchvision.models.densenet161` shows `UserWarning`.

## To Reproduce

```
pip3 install --pre torch torchvision -f https://download.pytorch.org/whl/nightly/cpu/torch_nightly.html
```
```
import pydoc
import torch
model = pydoc.locate('torchvision.models.densenet161')(pretrained=True)
script = torch.jit.script(model)
```
```
usr/local/lib/python3.7/site-packages/torch/jit/_recursive.py:145: UserWarning: 'layers' was found in ScriptModule constants, but was not actually set in __init__. Consider removing it.
  "Consider removing it.".format(name))
```

## Environment

Collecting environment information...
PyTorch version: 1.4.0
Is debug build: No
CUDA used to build PyTorch: None

OS: Mac OSX 10.15.2
GCC version: Could not collect
CMake version: version 3.15.3

Python version: 3.7
Is CUDA available: No
CUDA runtime version: No CUDA
GPU models and configuration: No CUDA
Nvidia driver version: No CUDA
cuDNN version: No CUDA

Versions of relevant libraries:
[pip3] numpy==1.17.4
[pip3] torch==1.4.0
[pip3] torchvision==0.5.0.dev20200105
[conda] Could not collect

@eellison


Discussion:
Thanks for the report!

Should be fixed with https://github.com/pytorch/vision/pull/1727

Resolving patch:
diff --git a/torchvision/models/densenet.py b/torchvision/models/densenet.py
--- a/torchvision/models/densenet.py
+++ b/torchvision/models/densenet.py
@@ -139,8 +139,6 @@ class DenseNet(nn.Module):
           but slower. Default: *False*. See `"paper" <https://arxiv.org/pdf/1707.06990.pdf>`_
     """
 
-    __constants__ = ['features']
-
     def __init__(self, growth_rate=32, block_config=(6, 12, 24, 16),
                  num_init_features=64, bn_size=4, drop_rate=0, num_classes=1000, memory_efficient=False):
 


Test patch:
Repository: pytorch/vision

Issue:
UserWarning: 'layers' was found in ScriptModule constants
## 🐛 Bug

Creating `torchvision.models.densenet161` shows `UserWarning`.

## To Reproduce

```
pip3 install --pre torch torchvision -f https://download.pytorch.org/whl/nightly/cpu/torch_nightly.html
```
```
import pydoc
import torch
model = pydoc.locate('torchvision.models.densenet161')(pretrained=True)
script = torch.jit.script(model)
```
```
usr/local/lib/python3.7/site-packages/torch/jit/_recursive.py:145: UserWarning: 'layers' was found in ScriptModule constants, but was not actually set in __init__. Consider removing it.
  "Consider removing it.".format(name))
```

## Environment

Collecting environment information...
PyTorch version: 1.4.0
Is debug build: No
CUDA used to build PyTorch: None

OS: Mac OSX 10.15.2
GCC version: Could not collect
CMake version: version 3.15.3

Python version: 3.7
Is CUDA available: No
CUDA runtime version: No CUDA
GPU models and configuration: No CUDA
Nvidia driver version: No CUDA
cuDNN version: No CUDA

Versions of relevant libraries:
[pip3] numpy==1.17.4
[pip3] torch==1.4.0
[pip3] torchvision==0.5.0.dev20200105
[conda] Could not collect

@eellison


Discussion:
Thanks for the report!

Should be fixed with https://github.com/pytorch/vision/pull/1727

Resolving patch:
diff --git a/torchvision/models/resnet.py b/torchvision/models/resnet.py
--- a/torchvision/models/resnet.py
+++ b/torchvision/models/resnet.py
@@ -34,7 +34,6 @@ def conv1x1(in_planes, out_planes, stride=1):
 
 class BasicBlock(nn.Module):
     expansion = 1
-    __constants__ = ['downsample']
 
     def __init__(self, inplanes, planes, stride=1, downsample=None, groups=1,
                  base_width=64, dilation=1, norm_layer=None):
@@ -75,7 +74,6 @@ def forward(self, x):
 
 class Bottleneck(nn.Module):
     expansion = 4
-    __constants__ = ['downsample']
 
     def __init__(self, inplanes, planes, stride=1, downsample=None, groups=1,
                  base_width=64, dilation=1, norm_layer=None):
diff --git a/torchvision/models/video/resnet.py b/torchvision/models/video/resnet.py
--- a/torchvision/models/video/resnet.py
+++ b/torchvision/models/video/resnet.py
@@ -81,7 +81,6 @@ def get_downsample_stride(stride):
 
 class BasicBlock(nn.Module):
 
-    __constants__ = ['downsample']
     expansion = 1
 
     def __init__(self, inplanes, planes, conv_builder, stride=1, downsample=None):


Test patch:
Repository: pytorch/vision

Issue:
I find some error in googlenet.py ?
the kernel size should be 5 in  branch3,but there is 3
`self.branch3 = nn.Sequential(
            BasicConv2d(in_channels, ch5x5red, kernel_size=1),
            BasicConv2d(ch5x5red, ch5x5, kernel_size=3, padding=1)
        )`
Why?


Discussion:
The model was ported from tensorflow. For some reason they used 3x3 instead of the 5x5.
Maybe a bug in the tensorflow model? I think it should be 5x5. Maybe it's missing a second 3x3 convolutional layer? That would also result in an overall 5x5 convolution. I noticed that batch normalization is used, so based on e.g. [this post](https://towardsdatascience.com/a-simple-guide-to-the-versions-of-the-inception-network-7fc52b863202), the model here seems to be inception-v2 instead of the original GoogLeNet (inception-v1). In a way, a second 3x3 convolutional layer would then make more sense than just setting the kernel size to 5x5. 
It’s most likely a bug, but it’s something that can’t easily be changed without retraining the model. If someone can change the 3x3 convolution to 5x5 and retrains the PyTorch model and gets the same or even a better accuracy that would be great, but that’s most likely not going to happen.

The Inception v2 model or also referred to as BN-Inception has more changes than just replacing one 5x5 with 2 consecutive 3x3 branches and adding batch normalization. So this is still the GoogLeNet model just with added batch normalization, which wasn’t available at the time of that paper so it was probably to speed up training.
Despite having to retrain the model when adding another 3x3 convolution, this also adds a computational cost of about 30% which is not desired for the GoogLeNet. I hope that clears some things up :)
@TheCodez can you send a PR adding a comment for this discrepancy?

Resolving patch:
diff --git a/torchvision/models/googlenet.py b/torchvision/models/googlenet.py
--- a/torchvision/models/googlenet.py
+++ b/torchvision/models/googlenet.py
@@ -224,6 +224,8 @@ def __init__(self, in_channels, ch1x1, ch3x3red, ch3x3, ch5x5red, ch5x5, pool_pr
 
         self.branch3 = nn.Sequential(
             conv_block(in_channels, ch5x5red, kernel_size=1),
+            # Here, kernel_size=3 instead of kernel_size=5 is a known bug.
+            # Please see https://github.com/pytorch/vision/issues/906 for details.
             conv_block(ch5x5red, ch5x5, kernel_size=3, padding=1)
         )
 


Test patch: