问题标签 [simpletransformers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - simpletransformers:即使在 simpletransformers 库提供了正确的参数之后,classifier.weight 和 classifier.bias 的大小也不匹配
我正在使用simpletransformers库在具有 13 个不同实体的自定义数据集上微调命名实体识别 (NER) 的 BERT 模型。即使在提供之后model_args.labels_list
,也会NERModel()
产生以下错误。
示例代码:
python - 你可以在 simpletransformers 包中使用 longformer 吗?
我想运行一个 longformer 模型来使用该simpletransformers
包为一组文档生成嵌入。
我尝试使用"longformer"
for model_type
and model_name
,但收到错误消息。
有人知道我应该在 simpletransformers 包中使用 longformer 的模型类型和模型名称吗?
python - 简单变压器的加载池层
我有一个微调的简单变压器表示模型。现在我想仅以 pickle 格式保存池层的权重,并将其放在我正在设计的另一个自定义自动编码器的池层中。我如何使用 pytorch 和 python 来做到这一点?
deep-learning - 使用拥抱人脸库加载 SimpleTransformer 模型?
我是 NLP 的新手。我有一个模型,我使用 SimpleTransformers 在数据集上对其进行了微调,我曾经像这样加载它:
现在我想使用泡菜格式的池层权重并在新的编码器-解码器中使用它们,编码器-解码器架构是这样的:
输入:大小 768,池:大小 768,隐藏:大小 3072,池:728,输出:大小 768
我是这样实现的(我不确定)
现在,我知道我可以像这样加载池层:
但这似乎不适用于简单的变压器。
如何以泡菜格式保存池层?我怎样才能在那个新班级中加载这些权重?
如果你回答我,我会很高兴
python - 带有 T5 的变压器模型中是否有占位符令牌?
我从 Huggingface 训练了一个 T5 模型进行释义。现在我想解释一个句子。但我希望某些单词保持不变或将它们作为占位符标记传递。例如,我想转述这句话:
并且输出应该包含'<color>'
一个标记。它也可以以不同的方式命名,但具有唯一的命名令牌。无论如何,这是否包含在 T5 模式中?
python - 使用 [CLS] 和 [SEP] 的 SimpleTransformers 标记化
我知道 simpleTransformers 提供了一个更简单的 API,因此我们不必在训练之前对数据进行标记,它是根据我们选择的模型自动完成的,
但我想知道,它是如何完成的,我该如何操作它?
在二进制分类的情况下,如果我有 1 个句子,那么它就是:
[CLS] 这是我的原话。
如果我想再添加 2 个句子,我们有 2 个选项:
选项 1:[CLS] 这是我的原句。[SEP] 这是我的第一句话。[SEP] 这是我的第二句话
选项 2:[CLS] 这是我的原句。这是我的第 1 个额外句子。这是我的第二句话
通常变压器模型会从选项 1 中学习得更好,但由于 simpleTransformer 会自动完成,我想知道如何确保我正在执行选项 1?
pytorch - SimpleTransformers "max_seq_length" 参数导致 Kaggle 和 Google Colab 中的 CUDA 内存不足错误
在使用 SimpleTransformers 对基于 CamemBERT 的多类分类任务微调 sloBERTa Transformer 模型时,我想使用模型参数“max_seq_length”:512,因为之前的工作表明它提供了比 128 更好的结果,但包含此参数触发以下错误。在 Kaggle 和 Google Colab 环境中的错误是相同的,终止执行并重新运行它并没有帮助。无论训练 epoch 的数量多么少都会触发错误,并且数据集仅包含 600 个实例(文本为字符串,标签为整数)。我尝试将 max_seq_length 降低到 509、500 和 128,但错误仍然存在。
没有这个参数的设置可以正常工作,并且允许训练 90 个 epoch,所以我有足够的内存。
这是错误:
附加代码(如果有帮助的话——我已经尝试了关于我在网上找到的 pytorch 的所有内容——完整的代码可以在https://www.kaggle.com/tajakuz/0-sloberta-example-max-seq-长度错误):
非常感谢您的帮助,非常感谢!
python - SimpleTransformers:通过下游任务训练进行两阶段微调?
我有一个关于 simpleTransformers 的问题,我的下游任务有 2 个数据集,有 3 个选项:
1.附加2个数据集并将它们视为1个大数据集:
2.单独训练而不连接但在同一模型上:
3. 单独训练而不连接但在同一个模型上,但定义了两次:(模型1和模型2完全相同,具有相同的超参数)model_1 = ClassificationModel("bert","bert-base-cased",args=train_args) model_2 = ClassificationModel("bert","bert-base-cased",args=train_args)
我的问题是:在选项 #2 中,它是否被视为 2 阶段训练,所以从这个意义上说,我不需要在测试时创建某种集成(我只会测试一次),但模型会微调两次? 第二次微调,即:第二次调用 model_1.train 不会取消第一次调用? 我对吗?还是将权重清除并返回到原始预训练的 bert 模型?
而在选项 3 中,我有 2 个不同的模型,所以我每次都会在一个单独的模型上测试两次,然后创建某种集合。
-另外,在 3 个选项中,您认为哪个是要走的路?