cannot load LayoutLMv3Tokenizer

#3
by yz - opened

tokenizer = LayoutLMv3Tokenizer.from_pretrained("layoutlmv3-base-chinese")
raise the following error:
1663659159(1).png
where is the vocab_file?

In fact, tokenizer_config.json use XLMRobertaTokenizer, but I think this a bad idea

Microsoft org

Hi,

I think you can just use LayoutXLMTokenizer/LayoutXLMProcessor for this model.

when look at the config,"vocab_size": 250002,that is the same as LayoutXLMTokenizer/LayoutXLM, so,use LayoutXLMTokenizer/LayoutXLM is OK。

关于 LayoutLM 的使用,目前我还没有实际动手做,最近正在了解。
(1)对于 LayoutLM-base 来说,Tokenizer 是针对文本任务的,LayoutLM 是多模态任务,所以预处理部分不太相同。LayoutLM 的加载可以使用 AutoProcessor,参考如下:

model = LayoutLMv3ForTokenClassification.from_pretrained("microsoft/layoutlmv3-base",
                                                         id2label=id2label,
                                                         label2id=label2id)
processor = AutoProcessor.from_pretrained("microsoft/layoutlmv3-base", apply_ocr=False)

(2)但是对于 Layoutlmv3-base-chinese 来说,它没有直接用同样的方式加载 vocab 等文件,而是用的 sentencepiece.bpe.model 来代替。
如果只加载预训练模型获取特征,可以如下:

tokenizer = XLMRobertaTokenizer.from_pretrained("microsoft/layoutlmv3-base-chinese", apply_ocr=False)
model = AutoModel.from_pretrained("microsoft/layoutlmv3-base-chinese")

如果再接特定输出,跑过 v3 chinese 版本在 token classification 上的任务,源码见https://github.com/microsoft/unilm/blob/b9107d9ee3ae4bbbb3ff0de2526f2b83bbf33e18/layoutlmv3/examples/run_xfund.py#L209,其中有在 token classification 任务上的加载示例,用的是 AutoTokenizer 和 AutoModelForTokenClassification。

yz changed discussion status to closed

建议把这一句tokenizer = XLMRobertaTokenizer.from_pretrained("microsoft/layoutlmv3-base-chinese", apply_ocr=False)放到

image.png

这里,我也是弄了很久才找到这里太浪费时间了,跟传统的tokenizer加载确实不太一样。

Sign up or log in to comment