ShiftedBronzes / OpenOOD /openood /postprocessors /dropout_postprocessor.py
AnonymousUser20's picture
Upload 1314 files
178d33b verified
Raw
History Blame Contribute Delete
810 Bytes
from typing import Any
import torch
from torch import nn
from .base_postprocessor import BasePostprocessor
class DropoutPostProcessor(BasePostprocessor):
def __init__(self, config):
self.config = config
self.args = config.postprocessor.postprocessor_args
self.dropout_times = self.args.dropout_times
@torch.no_grad()
def postprocess(self, net: nn.Module, data: Any):
logits_list = [net.forward(data) for i in range(self.dropout_times)]
logits_mean = torch.zeros_like(logits_list[0], dtype=torch.float32)
for i in range(self.dropout_times):
logits_mean += logits_list[i]
logits_mean /= self.dropout_times
score = torch.softmax(logits_mean, dim=1)
conf, pred = torch.max(score, dim=1)
return pred, conf