Я пытаюсь измерить важность токена для BERT
путем сравнения значения градуса встраивания токена. Итак, чтобы получить оценку, я скопировал 2.8.0
форвард BertModel и немного его изменил:
huggingface transformers 2.8.0 BERT
https://github.com/huggingface/transformers/blob/11c3257a18c4b5e1a3c1746eefd96f180358397b/src/transformers/modeling_bert.py
Код:
embedding_output = self.embeddings(
input_ids=input_ids, position_ids=position_ids, token_type_ids=token_type_ids, inputs_embeds=inputs_embeds
)
embedding_output = embedding_output.requires_grad_(True) # my code
encoder_outputs = self.encoder(
embedding_output,
attention_mask=extended_attention_mask,
head_mask=head_mask,
encoder_hidden_states=encoder_hidden_states,
encoder_attention_mask=encoder_extended_attention_mask,
)
sequence_output = encoder_outputs[0]
sequence_output.mean().backward() # my code
assert(embedding_output.grad is not None) # my code
Colab
ссылка: https://colab.research.google.com/drive/1MggBUaDWAAZNuXbTDM11E8jvdMGEkuRD Но это дает ошибку утверждения. Я не понимаю, почему, и, похоже, это ошибка для меня. Пожалуйста, помогите!