我有一个用于情绪分析的小数据集。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
我指的是 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”
如何从 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
作为“自然语言处理”场景的新手,我正在实验学习并实现了以下代码段:
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
我只是使用 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
当我运行此行时,出现此错误“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
我需要翻译数据库中的大量文本。因此,我这几天一直在和变压器和模型打交道。我绝对不是数据科学专家,不幸的是我没有进一步了解。
\n问题始于较长的文本。第二个问题是定序器的通常最大令牌大小 (512)。仅仅截断并不是一个真正的选择。在这里,我确实找到了一种解决方法,但它无法正常工作,结果是较长文本(> 300 个序列)上的单词沙拉
\n这是一个示例(请忽略警告,这是另一个问题 - 目前没有那么严重);
\n如果我使用例句 2(55 个序列)或 5 次(163 个序列)-没有问题。
\n但它会被例如 433 序列(屏幕截图中的第三个绿色文本块)搞乱。
\n\n对于超过 510 个序列,我尝试将其分成块,如上面描述的链接所示。但这里的结果也很奇怪。
\n我很确定 - 我有不止一个错误并且低估了这个主题。\n但我认为没有其他(免费/便宜)的方法来翻译大量文本。
\n你们能帮我一下吗?您发现哪些(思维)错误以及您建议如何解决这些问题?非常感谢。
\n\nfrom 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
我想使用 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
我正在探索句子转换器并发现了此页面。它展示了如何训练我们的自定义数据。但我不确定如何预测。如果有两个新句子,例如 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
是否可以将具有自定义转发功能的模型上传到 Huggingface 模型中心?
如果您的模型是正常形式,我可以看到如何执行此操作,但看不到如何自定义转发函数并执行此操作?