def construct_networks()

in uimnet/algorithms/due.py [0:0]


    def construct_networks(self, dataset=None):
        self.likelihood = gpytorch.likelihoods.SoftmaxLikelihood(
            num_classes=self.num_classes, mixing_weights=False)

        featurizer = torchvision.models.__dict__[self.arch](
            num_classes=self.num_classes,
            pretrained=False,
            zero_init_residual=True)
        num_features = featurizer.fc.in_features
        featurizer.fc = utils.Identity()

        if dataset is not None:
            loader = torch.utils.data.DataLoader(
                dataset, batch_size=32, shuffle=True)

            some_features = []
            with torch.no_grad():
                for i, datum in enumerate(loader):
                    some_features.append(featurizer(datum['x']).cpu())
                    if i == 30:
                        break

            some_features = torch.cat(some_features)
            self.dataset_length = len(dataset)
        else:
            # else not executed for training, following are placeholders
            # that should be replaced when doing classifier.load_state_dict()
            some_features = torch.randn(
                self.hparams["num_inducing_points"],
                num_features)
            self.dataset_length = 240000

        self.classifier = GP(
            self.num_classes,
            some_features,
            self.hparams["kernel"],
            self.hparams["num_inducing_points"])

        self.loss = gpytorch.mlls.VariationalELBO(
            self.likelihood, self.classifier, num_data=self.dataset_length)

        return dict(featurizer=featurizer)