- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的编码功能如下所示:
from transformers import BertTokenizer, BertModel
MODEL = 'bert-base-multilingual-uncased'
tokenizer = BertTokenizer.from_pretrained(MODEL)
def encode(texts, tokenizer=tokenizer, maxlen=10):
# import pdb; pdb.set_trace()
inputs = tokenizer.encode_plus(
texts,
return_tensors='tf',
return_attention_masks=True,
return_token_type_ids=True,
pad_to_max_length=True,
max_length=maxlen
)
return inputs['input_ids'], inputs["token_type_ids"], inputs["attention_mask"]
x_train = (tf.data.Dataset.from_tensor_slices(df_train.comment_text.astype(str).values)
.map(encode))
ValueError: Input is not valid. Should be a string, a list/tuple of strings or a list/tuple of integers.
encode
中设置断点时的理解那是因为我正在发送一个非 numpy 数组。我如何让 Huggingface Transformers 以 tensorflow 字符串作为输入很好地发挥作用?
df_train = pd.DataFrame({'comment_text': ['Today was a good day']*5})
from_generator
这样我就可以将字符串解析为
encode_plus
功能。但是,这不适用于 TPU。
AUTO = tf.data.experimental.AUTOTUNE
def get_gen(df):
def gen():
for i in range(len(df)):
yield encode(df.loc[i, 'comment_text']) , df.loc[i, 'toxic']
return gen
shapes = ((tf.TensorShape([maxlen]), tf.TensorShape([maxlen]), tf.TensorShape([maxlen])), tf.TensorShape([]))
train_dataset = tf.data.Dataset.from_generator(
get_gen(df_train),
((tf.int32, tf.int32, tf.int32), tf.int32),
shapes
)
train_dataset = train_dataset.batch(BATCH_SIZE).prefetch(AUTO)
transformers.__version__, tf.__version__
=>
('2.7.0', '2.1.0')
最佳答案
bert 的分词器处理字符串、字符串列表/元组或整数列表/元组。因此,请检查您的数据是否已转换为字符串。为了在整个数据集上应用分词器,我使用了 Dataset.map,但这在图形模式下运行。所以,我需要将它包装在一个 tf.py_function 中。 tf.py_function 将常规张量(带有一个值和一个 .numpy() 方法来访问它)传递给包装的 python 函数。使用 py_function 后,我的数据被转换为字节,因此我应用 tf.compat.as_str 将字节转换为字符串。
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
def encode(lang1, lang2):
lang1 = tokenizer.encode(tf.compat.as_str(lang1.numpy()), add_special_tokens=True)
lang2 = tokenizer.encode(tf.compat.as_str(lang2.numpy()), add_special_tokens=True)
return lang1, lang2
def tf_encode(pt, en):
result_pt, result_en = tf.py_function(func = encode, inp = [pt, en], Tout=[tf.int64, tf.int64])
result_pt.set_shape([None])
result_en.set_shape([None])
return result_pt, result_en
train_dataset = dataset3.map(tf_encode)
BUFFER_SIZE = 200
BATCH_SIZE = 64
train_dataset = train_dataset.shuffle(BUFFER_SIZE).padded_batch(BATCH_SIZE,
padded_shapes=(60, 60))
a,p = next(iter(train_dataset))
关于tensorflow - 通过 Huggingface 标记器映射文本数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61555097/
如何将 HuggingFace 数据集写入磁盘? 我使用 JSONL 文件制作了自己的 HuggingFace 数据集: Dataset({features: ['id', 'text'],num_r
是否有任何方法可以将两个评估数据集传递给 HuggingFace Trainer 对象,以便在训练期间可以在两个不同的集合(比如分布内和分布外集合)上评估训练模型?这是对象的实例化,它只接受一个 ev
想做类似的事情 tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') model = BertModel.from_pretra
来自文档 for from_pretrained ,我知道我不必每次都下载预训练的向量,我可以使用以下语法保存它们并从磁盘加载: - a path to a `directory` contain
默认缓存目录磁盘容量不足,我需要更改默认缓存目录的配置。 最佳答案 您可以在每次加载模型时指定缓存目录 .from_pretrained通过设置参数cache_dir .您可以通过导出环境变量 TRA
我正在使用 T5 模型和分词器执行下游任务。我想将某些 whitesapces 添加到分词器,例如行结尾 (\t) 和制表符 (\t)。添加这些标记是有效的,但不知何故标记器总是忽略第二个空格。因此,
我正在查看 Huggingface pipeline for Named Entity Recognition 的文档,我不清楚这些结果如何用于实际的实体识别模型。 例如,给出文档中的示例: >>>
Hugging Face 的 Transformers 是一个功能强大的机器学习框架,提供了一系列 API 和工具,用于预训练模型的下载和训练。为了避免重复下载,提高训练效率,Transformers
我正在构建基于 Huggingface Longformer 的分类器。下面是我的主要代码 model = LongformerForSequenceClassification.from_pretr
我最近根据源代码对以下代码进行了测试: https://github.com/cl-tohoku/bert-japanese/blob/master/masked_lm_example.ipynb i
运行下面的代码下载一个模型 - 有谁知道它下载到哪个文件夹? !pip install -q transformers from transformers import pipeline model
我正在用变形金刚练习总结文本。 按照以下教程:https://huggingface.co/transformers/usage.html#summarization from transformer
我收到以下错误: AssertionError:文本输入必须为 str(单个示例)、List[str](批处理或单个预标记示例)或 List[List[str]](预标记示例批处理)类型。,当我运行
问题 请帮助理解以下问题的原因以及如何构建 Keras 模型以在 huggingface 的预训练模型之上进行微调。 目标 在 TFDistilBertForSequenceClassificatio
我希望摘要任务通常假定长文档。但是,遵循文档 here ,我所做的任何简单摘要调用都表明我的文档太长: >>> summarizer = pipeline("summarization") >>> s
我在 Colab Notebook 上下载了预训练模型后,它会在我重置 notebook 变量后消失。有没有办法可以下载模型以供第二次使用? tokenizer = BertTokenizer.fro
特尔;博士: 我的模型总是预测相同的标签,我不知道为什么。下面是我的整个微调代码,希望有人能指出我哪里出错了。 我正在使用 Huggingface 的 TFBertForSequenceClassif
我的编码功能如下所示: from transformers import BertTokenizer, BertModel MODEL = 'bert-base-multilingual-uncase
我想使用 HuggingFace 的转换器使用预训练的 "xlm-mlm-xnli15-1024" 将中文翻译成英文模型。 This tutorial显示如何从英语到德语。 我尝试按照教程进行操作,但
我想添加额外的 Dense预训练后的层 TFDistilBertModel , TFXLNetModel和 TFRobertaModel抱脸模特。我已经看到如何使用 TFBertModel 做到这一点
我是一名优秀的程序员,十分优秀!