字典文件新增字符后,是不是一定需要重头训练模型? #14991
Replies: 1 comment 2 replies
-
当字典文件中新增字符后,会导致模型的全连接层输出维度改变,因此直接加载之前的预训练模型时会出现维度不匹配报错。针对你的问题,具体回答如下:
不是必须完全“重头训练”,但由于新增字符会导致识别模型的输出类别数增加,涉及到模型的最后一层参数(如全连接层),这部分参数在结构发生变化后无法加载。因此,虽然不能直接加载完整的预训练模型但仍然可以加载除最后一层外的其他层的参数,进行“微调”训练。从严格意义上讲,这也属于从头开始训练最后一层,但整个模型并不是完全从零开始训练。 文档中也明确提到:“如果在训练时修改了自定义字典,由于无法加载最后一层FC的参数,在迭代初期acc=0是正常的情况,不必担心,加载预训练模型依然可以加快模型收敛。”
不需要下载预训练模型对应的训练数据源。你只需要下载官方提供的预训练模型(如 PP-OCRv3 系列),并将它作为新的训练的初始参数加载。之后用你的自有数据进行微调训练即可,可以适当加入官方建议的一些通用场景数据(如 LSVT、RCTW)来提升泛化能力。 如果字典变更幅度较大,为达到较好效果,建议准备较大规模(比如上万张)的训练数据。
你可以使用预训练模型作为基础,但由于字符集变化导致输出维度改变,模型最后一层无法直接复用原参数,因此还是需要重新训练模型的最后一层。实际操作中:
这并不是从零开始训练整个模型,而是利用预训练参数加速新任务的收敛过程。 总结:
Response generated by 🤖 feifei-bot | chatgpt-4o-latest |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
1、目前我在字典文件新增字符后,使用预训练模型训练的时候会进行报错,因为字符新增后模型参数维度变了
这个时候我是不是只能重头训练模型?
2、如果重头训练模型,我是不是得把预训练模型的数据源下载下来,和我自己的数据集一起训练?
3、能否不重头训练依旧使用预训练模型
Beta Was this translation helpful? Give feedback.
All reactions