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)
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
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
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