Monte Carlo Dropout

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

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

Gallery generated by Sphinx-Gallery