I’m trying to train a CNN in PyTorch to recognise road signs from the GTSRB dataset. I keep getting this error:
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-7-6a0d3ee5f434> in <module>
      2 
      3 #roadSignTrain = torchvision.datasets.ImageFolder(root='/Users/username/Downloads/roadSigns/train', transform = transform)
----> 4 roadSignTrain = RoadSignDataset(csv_path=r'/Users/username/Downloads/GTSRB/Train/*/*.csv')
      5 trainloader = t.utils.data.DataLoader(roadSignTrain, batch_size=10, shuffle=True, num_workers=0)
      6 
<ipython-input-5-a0c6c7375def> in __init__(self, csv_path)
     22         self.to_tensor = transforms.ToTensor()
     23         #read the CSV file
---> 24         self.data_info = pd.read_csv(csv_path, header=None)
     25         #first column contains the image paths
     26         self.image_arr = np.asarray(self.data_info.iloc[:, 0])
~/opt/anaconda3/lib/python3.8/site-packages/pandas/io/parsers.py in read_csv(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, dialect, error_bad_lines, warn_bad_lines, delim_whitespace, low_memory, memory_map, float_precision)
    684     )
    685 
--> 686     return _read(filepath_or_buffer, kwds)
    687 
    688 
~/opt/anaconda3/lib/python3.8/site-packages/pandas/io/parsers.py in _read(filepath_or_buffer, kwds)
    450 
    451     # Create the parser.
--> 452     parser = TextFileReader(fp_or_buf, **kwds)
    453 
    454     if chunksize or iterator:
~/opt/anaconda3/lib/python3.8/site-packages/pandas/io/parsers.py in __init__(self, f, engine, **kwds)
    944             self.options["has_index_names"] = kwds["has_index_names"]
    945 
--> 946         self._make_engine(self.engine)
    947 
    948     def close(self):
~/opt/anaconda3/lib/python3.8/site-packages/pandas/io/parsers.py in _make_engine(self, engine)
   1176     def _make_engine(self, engine="c"):
   1177         if engine == "c":
-> 1178             self._engine = CParserWrapper(self.f, **self.options)
   1179         else:
   1180             if engine == "python":
~/opt/anaconda3/lib/python3.8/site-packages/pandas/io/parsers.py in __init__(self, src, **kwds)
   2006         kwds["usecols"] = self.usecols
   2007 
-> 2008         self._reader = parsers.TextReader(src, **kwds)
   2009         self.unnamed_cols = self._reader.unnamed_cols
   2010 
pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader.__cinit__()
pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._setup_parser_source()
FileNotFoundError: [Errno 2] No such file or directory: '/Users/username/Downloads/GTSRB/Train/*/*.csv'

The thing is, I’ve got the images and CSV in the right place. My GTSRB folder is in the downloads, and there are Train and Test folders (yes, spelled correctly).
The Train folder contains subfolders containing all of the images from a certain class, with a CSV file with their filename (within the folder, no path) and class.
The Test folder contains all of the test images, with a CSV file with their filename (within the folder, no path) and class.
Can someone let me know what’s going wrong?
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,0.5,0.5), (0.5,0.5,0.5), (0.5,)), transforms.Resize((48,48))])

roadSignTrain = RoadSignDataset(csv_path='/Users/username/Downloads/GTSRB/Train/*/*.csv')
trainloader = t.utils.data.DataLoader(roadSignTrain, batch_size=10, shuffle=True, num_workers=0)

roadSignTest = RoadSignDataset(csv_path='/Users/username/Downloads/GTSRB/Test/*.csv')
testloader = t.utils.data.DataLoader(roadSignTest, batch_size=10, shuffle=True, num_workers=0)