Воссоздание вывода BERT extract_features.py с моделью TensorFlow Hub - PullRequest
0 голосов
/ 24 октября 2019

Я создал вектор функций, которым я очень доволен, клонировав репозиторий BERT, загрузив «BERT-Base, Uncased» предварительно обученную модель и запустив extract_features.py например, так:

PYTHONPATH=. python extract_features.py --input_file=~/sandbox/input.txt --output_file=~/sandbox/bert_output.jsonl --vocab_file=$BERT_BASE_DIR/vocab.txt --bert_config_file=$BERT_BASE_DIR/bert_config.json --init_checkpoint=$BERT_BASE_DIR/bert_model.ckpt --layers=-2 --max_seq_length=128 --batch_size=8

Обратите внимание на аргумент --layers=-2, который указывает, что я хочу объекты от второго до последнего слоя.

Сейчас я пытаюсь воспроизвести те же функции, используя эту модель TensorFlow Hub , которую я считаю той же моделью. Я использовал этот хак , предложенный на TF Hub GitHub, чтобы получить доступ к нужному слою, поскольку открыт только выходной слой. Вектор элемента, который я получаю, подозрительно близок, но не идентичен (отдельные поплавки находятся в пределах 1% друг от друга). Я подтвердил, что мои входные токены идентичны в обоих случаях. Надеясь, что кто-то с большим знанием конфигурации BERT и внутренних компонентов может заметить что-то очевидное, что я упустил, или предложить способ продолжить отладку? Я в растерянности, так как интерфейсы довольно разные.

...