Мне нужно извлечь функции из предварительно обученной (отлаженной) модели BERT.
Я точно настроил модель BERT с предварительной подготовкой в Pytorch, используя трансформатор с обнимающим лицом. Все обучение / проверка выполняется на графическом процессоре в облаке.
В конце обучения я сохраняю модель и токенизатор, как показано ниже:
best_model.save_pretrained('./saved_model/')
tokenizer.save_pretrained('./saved_model/')
Это создает следующие файлы вsaved_model
каталог:
config.json
added_token.json
special_tokens_map.json
tokenizer_config.json
vocab.txt
pytorch_model.bin
Я сохраняю каталог saved_model
на своем компьютере и загружаю model
и tokenizer
, как показано ниже
model = torch.load('./saved_model/pytorch_model.bin',map_location=torch.device('cpu'))
tokenizer = BertTokenizer.from_pretrained('./saved_model/')
Теперь для извлечения функций,Я делаю ниже
input_ids = torch.tensor([tokenizer.encode("Here is some text to encode", add_special_tokens=True)])
last_hidden_states = model(input_ids)[0][0]
Но для последней строки мне выдается ошибка TypeError: 'collections.OrderedDict' object is not callable
Кажется, я не загружаю модель должным образом. Вместо того, чтобы загружать всю модель сама по себе, я думаю, что моя строка model=torch.load(....)
загружает упорядоченный словарь.
Что мне здесь не хватает? Я даже правильно сохраняю модель? Пожалуйста, предложите.