标签: huggingface-transformers

从encode() 在 Transformer Bert 模型中返回的令牌

我有一个用于情绪分析的小数据集。Bert分类器将是一个简单的 KNN,但我想从库中获取模型的词嵌入transformers。请注意,我刚刚发现这个库 - 我仍在学习。

因此,查看在线示例,我试图了解从模型返回的尺寸。

例子:

from transformers import BertTokenizer

tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')

tokens = tokenizer.encode(["Hello, my dog is cute", "He is really nice"])
print(tokens)

tokens = tokenizer.encode("Hello, my dog is cute", "He is really nice")
print(tokens)

tokens = tokenizer.encode(["Hello, my dog is cute"])
print(tokens)

tokens = tokenizer.encode("Hello, my dog is cute")
print(tokens)
Run Code Online (Sandbox Code Playgroud)

输出如下:

[101, 100, 100, 102]

[101, 7592, 1010, 2026, 3899, 2003, 10140, 102, 2002, 2003, 2428, 3835, 102]

[101, 100, 102]

[101, 7592, …
Run Code Online (Sandbox Code Playgroud)

python nlp machine-learning bert-language-model huggingface-transformers

3
推荐指数
1
解决办法
5575
查看次数

Transformer:无法从“transformers”导入名称“AutoModelWithLMHead”

我指的是 stackoverflow 中的这个答案,但我无法得到有关我的问题的任何线索:[/sf/ask/4419888721/][1]

这是我运行的代码:

import transformers
from transformers import AutoModelWithLMHead
Run Code Online (Sandbox Code Playgroud)

结果:

cannot import name 'AutoModelWithLMHead' from 'transformers' (/Users/xev/opt/anaconda3/lib/python3.7/site-packages/transformers/__init__.py)
Run Code Online (Sandbox Code Playgroud)

我的变压器版本是“3.0.2”。我对 AutoTokenizer 的导入没问题。

如果有人可以就变形金刚包提供帮助,我将不胜感激![1]:导入错误:无法从“transformers”导入名称“AutoModelWithLMHead”

python nlp huggingface-transformers

3
推荐指数
1
解决办法
5009
查看次数

从huggingface特征提取管道中获取句子嵌入

如何从 Huggingface 的特征提取管道中获取整个句子的嵌入?

我了解如何获取每个标记的特征(如下),但如何获取整个句子的总体特征?

feature_extraction = pipeline('feature-extraction', model="distilroberta-base", tokenizer="distilroberta-base")
features = feature_extraction("i am sentence")
Run Code Online (Sandbox Code Playgroud)

nlp machine-learning spacy-transformers huggingface-transformers

3
推荐指数
1
解决办法
1万
查看次数

RobertaForSequenceClassification 的 logits 和概率代表什么?

作为“自然语言处理”场景的新手,我正在实验学习并实现了以下代码段:

from transformers import RobertaTokenizer, RobertaForSequenceClassification
import torch
    
path = "D:/LM/rb/"
tokenizer = RobertaTokenizer.from_pretrained(path)
model = RobertaForSequenceClassification.from_pretrained(path)
    
inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
outputs = model(**inputs)
pred_logits = outputs.logits
print(pred_logits)
probs = pred_logits.softmax(dim=-1).detach().cpu().flatten().numpy().tolist()
print(probs)
Run Code Online (Sandbox Code Playgroud)

据我所知,应用模型会返回一个torch.FloatTensor包含取决于配置(RobertaConfig)和输入的各种元素”,并且可以使用 访问 logits .logits。如所示,我已将.softmax函数应用于张量以返回归一化概率并将结果转换为列表。我输出以下内容:

[0.5022980570793152, 0.49770188331604004]
Run Code Online (Sandbox Code Playgroud)

这些概率是否代表某种总体“掩盖”概率?

第一个和第二个索引在输入上下文中代表什么?


编辑:

model.num_labels
Run Code Online (Sandbox Code Playgroud)

输出:

2
Run Code Online (Sandbox Code Playgroud)

@cronoik解释说该模型“尝试对序列是否属于一个类或另一个类进行分类”

我是否可以假设因为没有经过训练的输出层,这些类还没有任何意义?

例如,我可以假设该句子经过分析后属于类别 1 的概率为 0.5。然而,什么是1级呢?

此外,具有预先训练的输出层的模型卡(例如开放式人工智能检测器)有助于区分“真实”“假”,因此我可以假设句子所属的类别。但是,如果没有某种类型的“mapping.txt”文件,如何确认这些“标签”?

python nlp text-classification pytorch huggingface-transformers

3
推荐指数
1
解决办法
9096
查看次数

AttributeError:“GPT2TokenizerFast”对象没有属性“max_len”

我只是使用 Huggingface 转换器库,并在运行 run_lm_finetuning.py 时收到以下消息: AttributeError: 'GPT2TokenizerFast' object has no attribute 'max_len'。其他人有这个问题或知道如何解决它吗?谢谢!

我的完整实验运行:mkdir 实验

对于 5 中的纪元,执行 python run_lm_finetuning.py
--model_name_or_path distilgpt2
--model_type gpt2
--train_data_filesmall_dataset_train_preprocessed.txt
--output_direxperiments/epochs_$epoch
--do_train
--overwrite_output_dir
--per_device_train_batch_size 4
--num_train_epochs $epoch 完成

transformer-model tokenize huggingface-transformers huggingface-tokenizers gpt-2

3
推荐指数
1
解决办法
1万
查看次数

PipelineException:在输入中找不到 mask_token ([MASK])

当我运行此行时,出现此错误“PipelineException:在输入中找不到 mask_token ([MASK])”。fill_mask("汽车。")

我在 Colab 上运行它。我的代码:

from transformers import BertTokenizer, BertForMaskedLM
from pathlib import Path
from tokenizers import ByteLevelBPETokenizer
from transformers import BertTokenizer, BertForMaskedLM


paths = [str(x) for x in Path(".").glob("**/*.txt")]
print(paths)

bert_tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')

from transformers import BertModel, BertConfig

configuration = BertConfig()
model = BertModel(configuration)
configuration = model.config
print(configuration)

model = BertForMaskedLM.from_pretrained("bert-base-uncased")

from transformers import LineByLineTextDataset
dataset = LineByLineTextDataset(
    tokenizer=bert_tokenizer,
    file_path="./kant.txt",
    block_size=128,
)

from transformers import DataCollatorForLanguageModeling
data_collator = DataCollatorForLanguageModeling(
    tokenizer=bert_tokenizer, mlm=True, mlm_probability=0.15
)

from transformers import Trainer, TrainingArguments …
Run Code Online (Sandbox Code Playgroud)

python nlp pytorch bert-language-model huggingface-transformers

3
推荐指数
1
解决办法
2990
查看次数

Huggingface Transformer[marianmt] 翻译较大文本时出现奇怪的结果

我需要翻译数据库中的大量文本。因此,我这几天一直在和变压器和模型打交道。我绝对不是数据科学专家,不幸的是我没有进一步了解。

\n

问题始于较长的文本。第二个问题是定序器的通常最大令牌大小 (512)。仅仅截断并不是一个真正的选择。在这里,我确实找到了一种解决方法,但它无法正常工作,结果是较长文本(> 300 个序列)上的单词沙拉

\n

这是一个示例(请忽略警告,这是另一个问题 - 目前没有那么严重)

\n

如果我使用例句 2(55 个序列)或 5 次(163 个序列)-没有问题。

\n

但它会被例如 433 序列(屏幕截图中的第三个绿色文本块)搞乱。

\n

在此输入图像描述

\n

对于超过 510 个序列,我尝试将其分成块,如上面描述的链接所示。但这里的结果也很奇怪。

\n

我很确定 - 我有不止一个错误并且低估了这个主题。\n但我认为没有其他(免费/便宜)的方法来翻译大量文本。

\n

你们能帮我一下吗?您发现哪些(思维)错误以及您建议如何解决这些问题?非常感谢。

\n

在此输入图像描述

\n
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM\nimport torch\n\nif torch.cuda.is_available():  \n  dev = "cuda"\nelse:  \n  dev = "cpu" \ndevice = torch.device(dev)\n \nmname = \'Helsinki-NLP/opus-mt-de-en\'\ntokenizer = AutoTokenizer.from_pretrained(mname)\nmodel = AutoModelForSeq2SeqLM.from_pretrained(mname)\nmodel.to(device)\n\nchunksize = 512\n\ntext_short = "Nach nur sieben Seiten appellierte man an die W\xc3\xa4hlerinnen und W\xc3\xa4hler, sich richtig …
Run Code Online (Sandbox Code Playgroud)

python translation huggingface-transformers huggingface-tokenizers

3
推荐指数
1
解决办法
2098
查看次数

运行时错误:张量 (585) 的扩展大小必须与非单一维度 1 处的现有大小 (514) 匹配

我想使用 Huggingface 来预测数千个句子的情绪。


from transformers import pipeline
model_path = "cardiffnlp/twitter-xlm-roberta-base-sentiment"
pipe = pipeline("sentiment-analysis", model=model_path, tokenizer=model_path)

from datasets import load_dataset

data_files = {
    "train": "/content/data_customer.csv"
}

dataset = load_dataset("csv", data_files=data_files)

dataset = dataset.map(lambda examples: dict(pipe(examples['text'])))

Run Code Online (Sandbox Code Playgroud)

但我收到以下错误。

RuntimeError: The expanded size of the tensor (585) must match the existing size (514) at non-singleton dimension 1.  Target sizes: [1, 585].  Tensor sizes: [1, 514]
Run Code Online (Sandbox Code Playgroud)

这篇文章提出了一种解决该问题的方法,但没有说明如何在管道中解决它。 在非单一维度 1 处,张量 a (707) 的大小必须与张量 b (512) 的大小匹配

huggingface-transformers huggingface-tokenizers huggingface-datasets

3
推荐指数
1
解决办法
1万
查看次数

句子转换器如何预测新的例子

我正在探索句子转换器并发现了此页面。它展示了如何训练我们的自定义数据。但我不确定如何预测。如果有两个新句子,例如 1)这是第三个示例,2)这是第三个示例。我怎样才能预测这些句子的相似程度?

from sentence_transformers import SentenceTransformer, InputExample, losses
from torch.utils.data import DataLoader

#Define the model. Either from scratch of by loading a pre-trained model
model = SentenceTransformer('distilbert-base-nli-mean-tokens')

#Define your train examples. You need more than just two examples...
train_examples = [InputExample(texts=['My first sentence', 'My second sentence'], label=0.8),
    InputExample(texts=['Another pair', 'Unrelated sentence'], label=0.3)]

#Define your train dataset, the dataloader and the train loss
train_dataloader = DataLoader(train_examples, shuffle=True, batch_size=16)
train_loss = losses.CosineSimilarityLoss(model)

#Tune the model
model.fit(train_objectives=[(train_dataloader, train_loss)], epochs=1, warmup_steps=100)
Run Code Online (Sandbox Code Playgroud)

----------------------------更新1 …

python nlp sentence sentence-similarity huggingface-transformers

3
推荐指数
1
解决办法
2579
查看次数

将具有自定义转发功能的模型上传到 Huggingface 模型中心?

是否可以将具有自定义转发功能的模型上传到 Huggingface 模型中心?

如果您的模型是正常形式,我可以看到如何执行此操作,但看不到如何自定义转发函数并执行此操作?

huggingface-transformers

3
推荐指数
1
解决办法
994
查看次数