def _new_model(self, x_dim, n_classes, **kwargs):
        if self.common_model is None:
            # This is the first task
            self.n_classes = n_classes

            if len(x_dim) == 1:
                n_convs = 0
            else:
                k = 3
                stride = 2
                second_layer_map_size = [(s - (k - 1) + 1) // stride
                                         for s in x_dim[1:]]
                self.hidden_size[0] = (self.hidden_size[0],
                                       *second_layer_map_size)
                n_convs = 1

            self.all_dims = [x_dim, *self.hidden_size]
            common_trunc = self.base_model_func(self.hidden_size,
                                                n_convs=n_convs)
            head = MultiHead(self.all_dims[-1], n_classes)
            self.common_model = make_model(common_trunc, head)

        assert n_classes == self.n_classes, 'Number of classes should always ' \
                                            'be the same with NewLegLLModel'

        new_leg = self.base_model_func(self.all_dims[:2])
        return make_model(new_leg, self.common_model)
Ejemplo n.º 2
0
    def _new_model(self, x_dim, n_classes, task_id, **kwargs):
        if self.all_dims is None:
            if len(x_dim) == 1:
                self.n_convs = 0
            else:
                k = 3
                stride = 2
                second_layer_map_size = [(s - (k - 1) + 1) // stride
                                         for s in x_dim[1:]]
                self.hidden_size[0] = (self.hidden_size[0],
                                       *second_layer_map_size)
                self.n_convs = 1
            self.all_dims = [x_dim, *self.hidden_size]
        if self.source_ll_model is None:
            raise ValueError('Source model should be set before creating the '
                             'first model for FineTuneLegLLModel !')

        head = MultiHead(self.all_dims[-1], n_classes)
        common_trunc = self.base_model_func(self.all_dims[1:],
                                            n_convs=self.n_convs)
        new_trunc = make_model(common_trunc, head)

        new_leg = self.base_model_func(self.all_dims[:2])
        new_model = make_model(new_leg, new_trunc, seq=FineTuneLegMultiTask)

        return new_model
Ejemplo n.º 3
0
    def _new_model(self, x_dim, n_classes, **kwargs):
        all_dims = [x_dim, *self.hidden_size]
        new_base = self.base_model_func(all_dims)

        new_head = MultiHead(all_dims[-1], n_classes)
        new_model = make_model(new_base, new_head)
        return new_model
Ejemplo n.º 4
0
    def _new_model(self, x_dim, n_classes, task_id, **kwargs):
        if self.all_dims is None:
            self.all_dims = [x_dim, *self.hidden_size]
        if self.source_ll_model is None:
            raise ValueError('Source model should be set before creating the '
                             'first model for FineTuneHeadLLModel !')

        new_base = self.base_model_func(self.all_dims)
        new_head = MultiHead(self.all_dims[-1], n_classes)
        new_model = make_model(new_base, new_head, seq=FineTuneHeadMultiTask)

        return new_model
    def _new_model(self, x_dim, n_classes, **kwargs):
        if self.common_model is None:
            self.all_dims = [x_dim, *self.hidden_size]
            self.common_model = self.base_model_func(self.all_dims)

        assert x_dim == self.all_dims[0], 'SingleHead model can only be used ' \
                                          'with the same input dimensions. ' \
                                          'Was initialized with {} but got {}' \
                                          ' on the last task'.format(
                                          self.all_dims[0], x_dim)

        new_head = MultiHead(self.all_dims[-1], n_classes)
        new_model = make_model(self.common_model, new_head)
        return new_model
    def _new_model(self, x_dim, n_classes, **kwargs):
        if self.model is None:
            self.x_dim = x_dim
            self.n_classes = n_classes

            all_dims = [x_dim, *self.hidden_size]
            base_model = self.base_model_func(all_dims)
            new_head = MultiHead(all_dims[-1], n_classes)

            self.model = make_model(base_model, new_head)

        if n_classes != self.n_classes:
            raise ValueError(
                'SingleHead model can only be used with the same number of '
                'classes. Was initialized with {} but got {} on the last '
                'task'.format(self.n_classes, n_classes))

        if x_dim != self.x_dim:
            raise ValueError(
                'SingleHead model can only be used with the same input '
                'dimensions. Was initialized with '
                '{} but got {} on the last task'.format(self.x_dim, x_dim))

        return self.model