Monte Carlo Dropout

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

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

Gallery generated by Sphinx-Gallery