def __init__( self, file_service: FileService, device: str, pretrained_representations_options: PretrainedRepresentationsOptions ): super().__init__() self._device = device self.do_not_save: bool = ( not pretrained_representations_options.fine_tune_pretrained and not pretrained_representations_options.fine_tune_after_convergence) self._include_pretrained = pretrained_representations_options.include_pretrained_model self._pretrained_model_size = pretrained_representations_options.pretrained_model_size self._pretrained_weights = pretrained_representations_options.pretrained_weights self._pretrained_max_length = pretrained_representations_options.pretrained_max_length self._pretrained_model: PreTrainedModel = None self._fine_tune_pretrained = pretrained_representations_options.fine_tune_pretrained self._fine_tune_after_convergence = pretrained_representations_options.fine_tune_after_convergence self._include_fasttext_model = pretrained_representations_options.include_fasttext_model if self._include_pretrained and self._pretrained_model_size and self._pretrained_weights: if pretrained_representations_options.pretrained_model == PretrainedModel.BERT: self._pretrained_model = BertModel.from_pretrained( pretrained_representations_options.pretrained_weights) elif pretrained_representations_options.pretrained_model == PretrainedModel.CamemBERT: self._pretrained_model = CamembertModel.from_pretrained( pretrained_representations_options.pretrained_weights) if pretrained_representations_options.fine_tune_pretrained: self._pretrained_model.train() else: self._pretrained_model.eval() if self._include_fasttext_model: assert pretrained_representations_options.fasttext_model is not None, 'fast text model is not supplied when include-fasttext-model is set to true' data_path = file_service.get_initial_data_path() fasttext_path = os.path.join( data_path, 'fasttext', pretrained_representations_options.fasttext_model) assert os.path.exists( fasttext_path), f'fast text model not found in {fasttext_path}' self._fasttext_dimension = pretrained_representations_options.fasttext_model_size self._fasttext_model = fasttext.load_model(fasttext_path)