Добрый день!
Столкнулся с проблемой, которую пока сам решить не смог. Я обучил модель для решения NER задачи со своими тегами. У меня большое количество тегов 194 (будет еще больше). Для обучения train_model со следующим конфигом:
{'dataset_reader': {'class_name': 'conll2003_reader',
'data_path': '/content/drive/My Drive/Colab_Notebooks/product_parsing/deeppavlov/data',
'dataset_name': 'ontonotes',
'provide_pos': False},
'dataset_iterator': {'class_name': 'data_learning_iterator'},
'chainer': {'in': ['x'],
'in_y': ['y'],
'pipe': [{'class_name': 'torch_transformers_ner_preprocessor',
'vocab_file': 'bert-base-cased',
'do_lower_case': False,
'max_seq_length': 512,
'max_subword_length': 15,
'token_masking_prob': 0.0,
'in': ['x'],
'out': ['x_tokens',
'x_subword_tokens',
'x_subword_tok_ids',
'startofword_markers',
'attention_mask',
'tokens_offsets']},
{'id': 'tag_vocab',
'class_name': 'simple_vocab',
'unk_token': ['O'],
'pad_with_zeros': True,
'save_path': '/content/drive/My Drive/Colab_Notebooks/product_parsing/deeppavlov/tags/tag.dict',
'load_path': '/content/drive/My Drive/Colab_Notebooks/product_parsing/deeppavlov/tags/tag.dict',
'fit_on': ['y'],
'in': ['y'],
'out': ['y_ind']},
{'class_name': 'torch_transformers_sequence_tagger',
'n_tags': '#tag_vocab.len',
'pretrained_bert': 'bert-base-cased',
'attention_probs_keep_prob': 0.5,
'use_crf': True,
'encoder_layer_ids': [-1],
'optimizer': 'AdamW',
'optimizer_parameters': {'lr': 2e-05,
'weight_decay': 1e-06,
'betas': [0.9, 0.999],
'eps': 1e-06},
'clip_norm': 1.0,
'min_learning_rate': 1e-07,
'learning_rate_drop_patience': 30,
'learning_rate_drop_div': 1.5,
'load_before_drop': True,
'save_path': '/content/drive/My Drive/Colab_Notebooks/product_parsing/deeppavlov/model_data/model',
'load_path': '/content/drive/My Drive/Colab_Notebooks/product_parsing/deeppavlov/model_data/model',
'in': ['x_subword_tok_ids', 'attention_mask', 'startofword_markers'],
'in_y': ['y_ind'],
'out': ['y_pred_ind', 'probas']},
{'ref': 'tag_vocab', 'in': ['y_pred_ind'], 'out': ['y_pred']}],
'out': ['x_tokens', 'y_pred']},
'train': {'epochs': 5,
'batch_size': 20,
'metrics': [{'name': 'ner_f1', 'inputs': ['y', 'y_pred']},
{'name': 'ner_token_f1', 'inputs': ['y', 'y_pred']}],
'validation_patience': 100,
'val_every_n_batches': 20,
'log_every_n_batches': 20,
'show_examples': False,
'pytest_max_batches': 2,
'pytest_batch_size': 8,
'evaluation_targets': ['valid', 'test'],
'class_name': 'torch_trainer'},
'metadata': {'variables': {'ROOT_PATH': '~/.deeppavlov',
'DOWNLOADS_PATH': '~/.deeppavlov/downloads',
'MODELS_PATH': '~/.deeppavlov/models',
'TRANSFORMER': 'bert-base-cased',
'MODEL_PATH': '~/.deeppavlov/models/ner_ontonotes_bert_torch_crf'},
'download': [{'url': 'http://files.deeppavlov.ai/v1/ner/ner_ontonotes_bert_torch_crf.tar.gz',
'subdir': '~/.deeppavlov/models/ner_ontonotes_bert_torch_crf'}],
'requirements': ['/usr/local/lib/python3.10/dist-packages/deeppavlov/requirements/torchcrf.txt',
'/usr/local/lib/python3.10/dist-packages/deeppavlov/requirements/sentencepiece.txt',
'/usr/local/lib/python3.10/dist-packages/deeppavlov/requirements/protobuf.txt',
'/usr/local/lib/python3.10/dist-packages/deeppavlov/requirements/transformers.txt',
'/usr/local/lib/python3.10/dist-packages/deeppavlov/requirements/pytorch.txt']}}
Многие классы в обучающей выборке встречались редко, поэтому хотел дополнительно повысить качество предсказаний. Попытался запустить обучение на дополнительном датасете (в котором не все классы из изначального датасета), но выходит ошибка о разных размерах классов в первой выборке и во второй: size mismatch for classifier.bias: copying a param with shape/
На форуме я нашел схожий вопрос Дообучение ner_ontonotes_bert_mult_torch на своих данных. К этому решению я тоже пришел (добавить в новый датасет по 1 экземпляру каждого класса). Но хотелось бы более простое решение. Можно как то запустить дообучение с не полным списком классов в новом датасете?
Заранее, спасибо.