问题标签 [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.

0 投票
0 回答
37 浏览

python - Simpletransformers 不使用所有数据进行训练和评估?

所以我在我的分类任务中使用 simpletransformers,我的 Dataframe(句子,标签)中有 2 列,大小为 3890

当我训练模型时,它显示它只使用了我的训练数据中的 8 个样本?为什么那为什么不是 3890/3890。(见下图中的红色条 0%)

在此处输入图像描述

同样在评估中显示 0%(我的测试是 1945 行),尽管输出的 len 是 1945

在此处输入图像描述

这是我的其余代码: # install simpletransformers !pip install simpletransformers

0 投票
1 回答
32 浏览

python - simpletransformers:即使在 simpletransformers 库提供了正确的参数之后,classifier.weight 和 classifier.bias 的大小也不匹配

我正在使用simpletransformers库在具有 13 个不同实体的自定义数据集上微调命名实体识别 (NER) 的 BERT 模型。即使在提供之后model_args.labels_list,也会NERModel()产生以下错误。

示例代码:

0 投票
0 回答
15 浏览

python - 你可以在 simpletransformers 包中使用 longformer 吗?

我想运行一个 longformer 模型来使用该simpletransformers包为一组文档生成嵌入。

我尝试使用"longformer"for model_typeand model_name,但收到错误消息。

有人知道我应该在 simpletransformers 包中使用 longformer 的模型类型和模型名称吗?

0 投票
1 回答
20 浏览

python - 简单变压器的加载池层

我有一个微调的简单变压器表示模型。现在我想仅以 pickle 格式保存池层的权重,并将其放在我正在设计的另一个自定义自动编码器的池层中。我如何使用 pytorch 和 python 来做到这一点?

0 投票
0 回答
18 浏览

deep-learning - 使用拥抱人脸库加载 SimpleTransformer 模型?

我是 NLP 的新手。我有一个模型,我使用 SimpleTransformers 在数据集上对其进行了微调,我曾经像这样加载它:

现在我想使用泡菜格式的池层权重并在新的编码器-解码器中使用它们,编码器-解码器架构是这样的:

输入:大小 768,池:大小 768,隐藏:大小 3072,池:728,输出:大小 768

我是这样实现的(我不确定)

现在,我知道我可以像这样加载池层:

但这似乎不适用于简单的变压器。

如何以泡菜格式保存池层?我怎样才能在那个新班级中加载这些权重?

如果你回答我,我会很高兴

0 投票
0 回答
24 浏览

python - 带有 T5 的变压器模型中是否有占位符令牌?

我从 Huggingface 训练了一个 T5 模型进行释义。现在我想解释一个句子。但我希望某些单词保持不变或将它们作为占位符标记传递。例如,我想转述这句话:

并且输出应该包含'<color>'一个标记。它也可以以不同的方式命名,但具有唯一的命名令牌。无论如何,这是否包含在 T5 模式中?

0 投票
0 回答
54 浏览

python - 使用 [CLS] 和 [SEP] 的 SimpleTransformers 标记化

我知道 simpleTransformers 提供了一个更简单的 API,因此我们不必在训练之前对数据进行标记,它是根据我们选择的模型自动完成的,

但我想知道,它是如何完成的,我该如何操作它?

在二进制分类的情况下,如果我有 1 个句子,那么它就是:

[CLS] 这是我的原话。

如果我想再添加 2 个句子,我们有 2 个选项:

选项 1:[CLS] 这是我的原句。[SEP] 这是我的第一句话。[SEP] 这是我的第二句话

选项 2:[CLS] 这是我的原句。这是我的第 1 个额外句子。这是我的第二句话

通常变压器模型会从选项 1 中学习得更好,但由于 simpleTransformer 会自动完成,我想知道如何确保我正在执行选项 1?

0 投票
0 回答
11 浏览

python - SimpleTransformers 模型没有对整个数据进行训练(如 epochs 栏下的括号中所示)?

我的数据有 1751 个句子,但是在训练时,纪元栏下会出现一个数字。有时是 1751,这很有意义,这是我拥有的句子数量,但大多数时候它是数据数量的 50%(我拥有的句子如下图所示)。

我试图查看文档以了解该数字是否应该与我的训练集大小相同,但我找不到答案。 在此处输入图像描述 在此处输入图像描述 图片

我正在使用带有 GPU 后端的 Kaggle。这是否意味着模型确实没有对所有数据进行训练?

0 投票
1 回答
66 浏览

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-长度错误):

非常感谢您的帮助,非常感谢!

0 投票
0 回答
32 浏览

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 个选项中,您认为哪个是要走的路?