Monte Carlo Dropout

Uses MCD based on a pre-trained model from the Hendrycks baseline paper.

 7 from torch.utils.data import DataLoader
 8 from torchvision.datasets import CIFAR10
 9
10 from pytorch_ood.dataset.img import Textures
11 from pytorch_ood.detector import MCD
12 from pytorch_ood.model import WideResNet
13 from pytorch_ood.utils import OODMetrics, ToUnknown, fix_random_seed
14
15 fix_random_seed(123)
16 device = "cuda:0"
17
18 trans = WideResNet.transform_for("cifar10-pt")
19
20
21 # setup ID test data
22 dataset_in_test = CIFAR10(root="data", train=False, download=True, transform=trans)
23 # setup OOD test data
24 dataset_out_test = Textures(
25     root="data", download=True, transform=trans, target_transform=ToUnknown()
26 )
27
28 # merge dataset and create data loaders
29 test_loader = DataLoader(dataset_in_test + dataset_out_test, batch_size=128)
30
31 # Stage 1: Create DNN
32 model = WideResNet(num_classes=10, pretrained="cifar10-pt").to(device)
33
34 # Stage 2: Create Detector
35 detector = MCD(model, samples=30)
36
37 # Stage 3: Evaluate Detectors
38 metrics = OODMetrics()
39
40 for x, y in test_loader:
41     metrics.update(detector(x.to(device)), y)
42
43 print(metrics.compute())

Gallery generated by Sphinx-Gallery