#3693·flair

[特性]: 当使用 "layers" 参数小于 -1 时,删除未使用的嵌入层

作者: zele95创建于 2026年3月18日更新于 2026年3月18日
标签feature

问题说明

我已使用Flair库3年,并用我的自定义数据集(关系分类器、关系extractor、序列tagger、文本分类器、多任务模式)训练多个不同的模型。 今年,我对所有模型进行了分层检测(在https://arxiv.org/abs/2004.12993和https://aclanthology.org/2021.eacl-main.8/),并意识到大多数模型并不要求所有12个编码层(或ModernBERT的28个编码层)达到与12个层的训练有素的模型相同的性能分数。 因此,作为一种优化技术,我一直在重新培训所有带有嵌入(TransformerDocumentEmbeddings或 Transformer WordEmbeddings)参数"层"设置到-4或-6等值(从下层中取出嵌入物,而不是最后一层,如默认值为-1).

尽管如此,Flair嵌入对象似乎在推论期间仍然会计算出所有地层,即使"层"参数被设置为下层. 所以我的问题是,这是故意的,如果是,那为什么呢? 我看不出为什么没有使用(甚至训练)的地层应该留在Transformer中,

为了处理这个问题,在训练模型后,我不得不从检查站状态中切出未使用的地层 dit并更新嵌入配置.

解决

如果这确实是一个错误,作为它的一个解决方案,我提议在使用"layers"参数并定义从哪个编码器层被取出后去除嵌入对象内部的这些未使用的层. 如果打算像目前那样执行,请解释原因。 谢谢!

++ 附加上下文

无回复( N)