你遇到的问题是因为词汇表大小超出了范围。在这个例子中,164930 超出了 119547。要解决这个问题,你需要调整词汇表大小。你可以在 run_pretraining.py
文件中找到 tokenizer_builder
函数,然后修改 vocab_file
参数来设置新的词汇表大小。
例如,如果你想将词汇表大小设置为 200000,你可以这样修改:
def tokenizer_builder(bert_config):
...
# 其他代码保持不变
...
return tokenizer
# 在创建 tokenizer 时设置新的词汇表大小
tokenizer = tokenizer_builder(bert_config)
with open("new_vocab.txt", "w") as f:
f.write("".join([tokenizer.vocab_file.vocab_fs.decode(i) for i in tokenizer.vocab_file.vocab]))
tokenizer.vocab_file.vocab = [tokenizer.vocab_file.vocab[i] for i in range(200000)]
然后,在运行 run_pretraining.py
时,使用新的词汇表文件:
!python run_pretraining.py
--bert_config_file "../bert-multi-cased/bert_config.json"
--input_file "../bert-model-custom/pretrain.tfrecord"
--output_dir "../bert-model-custom"
--init_checkpoint "../bert-multi-cased/bert_model.ckpt"
--do_train True
--train_batch_size 2
--tokenizer_path "new_vocab.txt"
这样,你的模型应该可以正常运行了。
1条答案
按热度按时间2ic8powd1#
哦,上面的
pretrain.tfrecord
是通过运行create_pretraining_data.py创建的。我还在使用TF版本1.14.1。