ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

pix2tex 如何为自己的公式集生成自定义 tokenizer 并配置训练?

2026/9/14 11:29:41 拓冰建站 浏览量
pix2tex 如何为自己的公式集生成自定义 tokenizer 并配置训练? pix2tex 如何为自己的公式集生成自定义 tokenizer 并配置训练【免费下载链接】LaTeX-OCRpix2tex: Using a ViT to convert images of equations into LaTeX code.项目地址: https://gitcode.com/GitHub_Trending/la/LaTeX-OCR如果你已经有一份自己的数学公式图像数据集想基于 pix2texLaTeX-OCR一个用 ViT 将公式图片转换为 LaTeX 代码的模型训练自己的模型就需要两步准备工作为自己的公式集训练一个自定义 BPE tokenizer然后修改训练配置并启动训练。本文只覆盖这条路径从公式文本 公式图片到生成 tokenizer、打包数据集、修改配置、开始训练。前提条件来自 docs/installation.md 与 README.mdPython 3.7并已安装 PyTorch安装训练依赖pip install pix2tex[train]。准备你的公式数据训练入口需要两样东西一个公式文本文件和一个图片目录。公式文本文件每行一条 LaTeX 公式例如项目自带数据中的math.txt。图片目录存放公式渲染出的 PNG 图片。根据 pix2tex/dataset/dataset.py 的实现程序只读取目录下的*.png并用文件名去掉扩展名作为整数去公式文本文件中取对应行号作为该图的标签所以图片文件命名必须是它在公式文本中的行序号如0.png、1.png……。图片尺寸会在加载时被过滤宽高必须落在min_dimensions默认 32×32到max_dimensions默认 1024×512之间超出范围的图片会被丢弃。如果暂时没有自己的数据README 提到作者在 Google Drive 上提供了生成的训练数据formulae.zip 为图片、math.txt 为标签验证集和测试集用同样的标签文本文件需要分别重复下面的步骤。第 1 步生成自定义 tokenizerREADME 给出的命令python -m pix2tex.dataset.dataset --equations path_to_textfile --vocab-size 8000 --out tokenizer.json其中path_to_textfile是 README 中的占位写法替换为你自己的公式文本文件路径。这条命令只传了--equations没传--imagesdataset.py的入口会进入 tokenizer 生成分支调用 Hugging Facetokenizers库训练一个 BPE 模型特殊 token 固定为[PAD]、[BOS]、[EOS]--vocab-size控制词表大小pix2tex/dataset/dataset.py 中该参数默认值也是 8000结果保存为--out指定的 json 文件。生成后得到例如tokenizer.json它就是后面数据集打包和训练配置共用的分词器。第 2 步把图片与标签打包成数据集python -m pix2tex.dataset.dataset --equations path_to_textfile --images path_to_images --out dataset.pkl--images path_to_images上面那一步中说明的图片目录--out dataset.pkl输出的 pickle 数据集文件。由于第 1 步生成了自定义 tokenizer这一步要把传给它README 原文To use your own tokenizer pass it via--tokenizer(See below).python -m pix2tex.dataset.dataset --equations path_to_textfile --images path_to_images --tokenizer tokenizer.json --out dataset.pklREADME 同时要求验证集以及测试集也要用同样的流程再各生成一份.pkl。第 3 步修改训练配置以模板 pix2tex/model/settings/config.yaml 为基础README 要求至少改以下几项配置项模板中的值改成datadataset/data/train.pkl你生成的训练集.pkl路径valdatadataset/data/val.pkl你生成的验证集.pkl路径tokenizerdataset/tokenizer.json第 1 步生成的 tokenizer 文件路径num_tokens8000你的词表大小README 明确要求 setnum_tokensto your vocabulary size注意num_tokens必须与你--vocab-size的取值一致上面命令用的是 8000而模板里num_tokens恰好也是 8000如果你换了一个词表大小这里必须同步修改。README 说 Change other hyperparameters if you want to即其余超参数batchsize、lr、epochs、max_seq_len等可按需调整。另外 pix2tex/dataset/dataset.py 中prepare_data会跳过 tokenize 后超过max_seq_len的批次序列过长的样本不会进入训练。第 4 步启动训练python -m pix2tex.train --config path_to_config_filepath_to_config_file替换为你修改后的 yaml 路径pix2tex/train.py 中该参数缺省时使用内置的settings/debug.yaml所以自定义训练应显式传入。训练过程中可以这样判断进展均来自 pix2tex/train.py 的实现进度条实时显示Loss: %.4f每隔sample_freq模板值为 3000个 batch会在验证集上计算 BLEU score、normed edit distance、token accuracy 三项指标只有 BLEU 和 token accuracy 同时超过历史最佳时才保存最优模型每save_freq个 epoch模板值为 5强制保存一次 checkpoint文件形如name_eepoch_stepstep.pth写入model_path/name目录模板中model_path: checkpoints、name: pix2tex并在同目录落一份config.yaml记录本次训练参数。也就是说验证成功的信号是checkpoints/pix2tex/下出现.pth权重文件与对应的config.yaml并且训练日志中的三项验证指标随训练推进有变化。README 中给出的官方模型评测结果为参考示例BLEU 0.88、normed edit distance 0.10、token accuracy 0.60——这是官方训练数据上的示例数值不代表你的数据会得到相同结果。边界与注意事项图片必须是 PNG 且文件名即标签行号尺寸在 32×32 到 1024×512 之间否则该样本不会进入数据集tokenizer、数据集.pkl和配置三者必须保持一致数据集打包用的--tokenizer、配置里的tokenizer路径、num_tokens与--vocab-size任何一处不一致都会导致 token id 对不上训练依赖 GPU 与否可用--no_cuda参数强制 CPU 模式见 pix2tex/train.py 的参数定义。训练完成后权重文件即可按config.yaml中记录的路径在checkpoints目录中找回如果你的数据规模远小于官方训练集建议先小步跑通整条流程tokenizer → dataset.pkl → config → train再调大词表和 epoch。【免费下载链接】LaTeX-OCRpix2tex: Using a ViT to convert images of equations into LaTeX code.项目地址: https://gitcode.com/GitHub_Trending/la/LaTeX-OCR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考