Exemplo n.º 1
0
    def __init__(self, cfg, model_cfg, num_classes, **kwargs):
        super().__init__()
        self.backbone = build_backbone(
            model_cfg.BACKBONE.NAME,
            verbose=cfg.VERBOSE,
            pretrained=model_cfg.BACKBONE.PRETRAINED,
            **kwargs)
        fdim = self.backbone.out_features

        self.head = None
        if model_cfg.HEAD.NAME and model_cfg.HEAD.HIDDEN_LAYERS:
            self.head = build_head(model_cfg.HEAD.NAME,
                                   verbose=cfg.VERBOSE,
                                   in_features=fdim,
                                   hidden_layers=model_cfg.HEAD.HIDDEN_LAYERS,
                                   activation=model_cfg.HEAD.ACTIVATION,
                                   bn=model_cfg.HEAD.BN,
                                   dropout=model_cfg.HEAD.DROPOUT,
                                   **kwargs)
            fdim = self.head.out_features

        self.classifier = None
        if num_classes > 0:
            self.classifier = nn.Linear(fdim, num_classes)

        self._fdim = fdim
Exemplo n.º 2
0
    def build_critic(self):
        cfg = self.cfg

        print('Building critic network')
        fdim = self.model.fdim
        critic_body = build_head('mlp',
                                 verbose=cfg.VERBOSE,
                                 in_features=fdim,
                                 hidden_layers=[fdim, fdim // 2],
                                 activation='leaky_relu')
        self.critic = nn.Sequential(critic_body, nn.Linear(fdim // 2, 1))
        print('# params: {:,}'.format(count_num_param(self.critic)))
        self.critic.to(self.device)
        self.optim_c = build_optimizer(self.critic, cfg.OPTIM)
        self.sched_c = build_lr_scheduler(self.optim_c, cfg.OPTIM)
        self.register_model('critic', self.critic, self.optim_c, self.sched_c)