MCPcopy Create free account
hub / github.com/TorchSSL/TorchSSL / SSL_Dataset

Class SSL_Dataset

datasets/ssl_dataset.py:191–336  ·  view source on GitHub ↗

SSL_Dataset class gets dataset from torchvision.datasets, separates labeled and unlabeled data, and return BasicDataset: torch.utils.data.Dataset (see datasets.dataset.py)

Source from the content-addressed store, hash-verified

189
190
191class SSL_Dataset:
192 """
193 SSL_Dataset class gets dataset from torchvision.datasets,
194 separates labeled and unlabeled data,
195 and return BasicDataset: torch.utils.data.Dataset (see datasets.dataset.py)
196 """
197
198 def __init__(self,
199 args,
200 alg='fixmatch',
201 name='cifar10',
202 train=True,
203 num_classes=10,
204 data_dir='./data'):
205 """
206 Args
207 alg: SSL algorithms
208 name: name of dataset in torchvision.datasets (cifar10, cifar100, svhn, stl10)
209 train: True means the dataset is training dataset (default=True)
210 num_classes: number of label classes
211 data_dir: path of directory, where data is downloaed or stored.
212 """
213 self.args = args
214 self.alg = alg
215 self.name = name
216 self.train = train
217 self.num_classes = num_classes
218 self.data_dir = data_dir
219 crop_size = 96 if self.name.upper() == 'STL10' else 224 if self.name.upper() == 'IMAGENET' else 32
220 self.transform = get_transform(mean[name], std[name], crop_size, train)
221
222 def get_data(self, svhn_extra=True):
223 """
224 get_data returns data (images) and targets (labels)
225 shape of data: B, H, W, C
226 shape of labels: B,
227 """
228 dset = getattr(torchvision.datasets, self.name.upper())
229 if 'CIFAR' in self.name.upper():
230 dset = dset(self.data_dir, train=self.train, download=True)
231 data, targets = dset.data, dset.targets
232 return data, targets
233 elif self.name.upper() == 'SVHN':
234 if self.train:
235 if svhn_extra: # train+extra
236 dset_base = dset(self.data_dir, split='train', download=True)
237 data_b, targets_b = dset_base.data.transpose([0, 2, 3, 1]), dset_base.labels
238 dset_extra = dset(self.data_dir, split='extra', download=True)
239 data_e, targets_e = dset_extra.data.transpose([0, 2, 3, 1]), dset_extra.labels
240 data = np.concatenate([data_b, data_e])
241 targets = np.concatenate([targets_b, targets_e])
242 del data_b, data_e
243 del targets_b, targets_e
244 else: # train_only
245 dset = dset(self.data_dir, split='train', download=True)
246 data, targets = dset.data.transpose([0, 2, 3, 1]), dset.labels
247 else: # test
248 dset = dset(self.data_dir, split='test', download=True)

Callers 14

main_workerFunction · 0.90
eval.pyFile · 0.90
main_workerFunction · 0.90
main_workerFunction · 0.90
main_workerFunction · 0.90
main_workerFunction · 0.90
main_workerFunction · 0.90
main_workerFunction · 0.90
main_workerFunction · 0.90
main_workerFunction · 0.90
main_workerFunction · 0.90
main_workerFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected