12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- from os.path import expanduser
- import os
- import torch
- from sklearn.datasets import make_classification
- from sklearn.model_selection import train_test_split
- from torch.utils.data import TensorDataset
- from torch.utils.data.dataloader import DataLoader
- from torchvision.datasets import MNIST
- from torchvision.transforms import Compose, ToTensor
- from avalanche.benchmarks import nc_benchmark
- def common_setups():
- # adapt_dataset_urls()
- pass
- def load_benchmark(use_task_labels=False, fast_test=True):
- """
- Returns a NC Benchmark from a fake dataset of 10 classes, 5 experiences,
- 2 classes per experience.
- """
- if fast_test:
- my_nc_benchmark = get_fast_benchmark(use_task_labels)
- else:
- mnist_train = MNIST(
- root=expanduser("~") + "/.avalanche/data/mnist/",
- train=True, download=True,
- transform=Compose([ToTensor()]))
- mnist_test = MNIST(
- root=expanduser("~") + "/.avalanche/data/mnist/",
- train=False, download=True,
- transform=Compose([ToTensor()]))
- my_nc_benchmark = nc_benchmark(
- mnist_train, mnist_test, 5,
- task_labels=use_task_labels, seed=1234)
- return my_nc_benchmark
- def get_fast_benchmark(use_task_labels=False, shuffle=True):
- n_samples_per_class = 100
- dataset = make_classification(
- n_samples=10 * n_samples_per_class,
- n_classes=10,
- n_features=6, n_informative=6, n_redundant=0)
- X = torch.from_numpy(dataset[0]).float()
- y = torch.from_numpy(dataset[1]).long()
- train_X, test_X, train_y, test_y = train_test_split(
- X, y, train_size=0.6, shuffle=True, stratify=y)
- train_dataset = TensorDataset(train_X, train_y)
- test_dataset = TensorDataset(test_X, test_y)
- my_nc_benchmark = nc_benchmark(train_dataset, test_dataset, 5,
- task_labels=use_task_labels, shuffle=shuffle)
- return my_nc_benchmark
- def load_experience_train_eval(experience, batch_size=32, num_workers=0):
- for x, y, t in DataLoader(experience.dataset.train(), batch_size=batch_size,
- num_workers=num_workers):
- break
- for x, y, t in DataLoader(experience.dataset.eval(), batch_size=batch_size,
- num_workers=num_workers):
- break
- def get_device():
- if "USE_GPU" in os.environ:
- use_gpu = os.environ['USE_GPU'].lower() in ["true"]
- else:
- use_gpu = False
- print("Test on GPU:", use_gpu)
- if use_gpu:
- device = "cuda"
- else:
- device = "cpu"
- return device
- __all__ = [
- 'common_setups',
- 'load_benchmark',
- 'get_fast_benchmark',
- 'load_experience_train_eval',
- 'get_device'
- ]
|