cannot load LayoutLMv3Tokenizer
In fact, tokenizer_config.json
use XLMRobertaTokenizer
, but I think this a bad idea
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。