BERT调用函数中的关键字参数

Vivek Subramanian

在HuggingFace TensorFlow 2.0 BERT库中,文档指出:

TF 2.0模型接受两种格式作为输入:

  • 将所有输入作为关键字参数(例如PyTorch模型),或

  • 在第一个位置参数中将所有输入作为列表,元组或字典。

我试图使用这两个中的第一个来调用我创建的BERT模型:

from transformers import BertTokenizer, TFBertModel
import tensorflow as tf

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

text = ['This is a sentence', 
        'The sky is blue and the grass is green', 
        'More words are here']
labels = [0, 1, 0]
tokenized_text = bert_tokenizer.batch_encode_plus(batch_text_or_text_pairs=text,
                                                  pad_to_max_length=True,
                                                  return_tensors='tf')
dataset = tf.data.Dataset.from_tensor_slices((tokenized_text['input_ids'],
                                              tokenized_text['attention_mask'],
                                              tokenized_text['token_type_ids'],
                                              tf.constant(labels))).batch(3)
sample = next(iter(dataset))

result1 = bert_model(inputs=(sample[0], sample[1], sample[2]))  # works fine
result2 = bert_model(inputs={'input_ids': sample[0], 
                             'attention_mask': sample[1], 
                             'token_type_ids': sample[2]})  # also fine
result3 = bert_model(input_ids=sample[0], 
                     attention_mask=sample[1], 
                     token_type_ids=sample[2])  # raises an error

但是,当我执行最后一行时,出现错误:

TypeError: __call__() missing 1 required positional argument: 'inputs'

有人可以解释一下如何正确使用输入的关键字参数样式吗?

登林格

似乎在内部,如果您不仅仅将一个张量作为第一个参数,它们将解释inputsas input_ids您可以在中看到它TFBertModel,然后寻找TFBertMainLayercall功能。

对我来说,如果执行以下操作result1result2得到的结果完全相同

result3 = bert_model(inputs=sample[0], 
                     attention_mask=sample[1], 
                     token_type_ids=sample[2])

另外,您也可以删除,也可以inputs=

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在python函数调用中混合关键字参数和*元组的规则是什么

来自分类Dev

函数中带有*&参数的常量关键字。

来自分类Dev

参数类型的构造函数中“ where”关键字的用途

来自分类Dev

在修饰的函数中强制使用仅关键字的参数

来自分类Dev

在this关键字上调用函数

来自分类Dev

装饰器:TypeError:“在函数调用中获得了关键字参数<变量名称>的多个值”

来自分类Dev

Swift参数中的默认关键字

来自分类Dev

Asyncio中的请求-关键字参数

来自分类Dev

matplotlib radviz中的关键字参数

来自分类Dev

模板参数中的const关键字

来自分类Dev

在Racket中打包关键字参数?

来自分类Dev

模板参数中的const关键字

来自分类Dev

如何获取传递给函数调用的关键字参数的原始顺序?

来自分类Dev

是否有不能使用关键字参数调用的内置函数的完整列表?

来自分类Dev

Common Lisp-如何使用关键字参数对函数进行调用/应用?

来自分类Dev

关键字和字典中的函数

来自分类Dev

嵌套函数中“ this”关键字的范围?

来自分类Dev

创建一个在原始函数中设置关键字参数的局部函数

来自分类Dev

快速的函数调用:自关键字与不关键字

来自分类Dev

在robotframework中调用关键字时如何限制预定义的参数值

来自分类Dev

在方法调用中通过位置和关键字传递参数“算法”

来自分类Dev

调用带有关键字参数的方法

来自分类Dev

自调用函数中不带var关键字的变量如何工作?

来自分类Dev

构造函数调用绑定到Java中的new关键字?

来自分类Dev

在forEach中调用类函数:Javascript如何处理“ this”关键字

来自分类Dev

这段代码中如何使用super关键字来调用父类的构造函数?

来自分类Dev

Racket中关键字和函数参数默认值的宏

来自分类Dev

将时间单位作为变量传递给时间增量函数中的关键字参数。

来自分类Dev

将关键字参数传递给Python线程中的目标函数

Related 相关文章

  1. 1

    在python函数调用中混合关键字参数和*元组的规则是什么

  2. 2

    函数中带有*&参数的常量关键字。

  3. 3

    参数类型的构造函数中“ where”关键字的用途

  4. 4

    在修饰的函数中强制使用仅关键字的参数

  5. 5

    在this关键字上调用函数

  6. 6

    装饰器:TypeError:“在函数调用中获得了关键字参数<变量名称>的多个值”

  7. 7

    Swift参数中的默认关键字

  8. 8

    Asyncio中的请求-关键字参数

  9. 9

    matplotlib radviz中的关键字参数

  10. 10

    模板参数中的const关键字

  11. 11

    在Racket中打包关键字参数?

  12. 12

    模板参数中的const关键字

  13. 13

    如何获取传递给函数调用的关键字参数的原始顺序?

  14. 14

    是否有不能使用关键字参数调用的内置函数的完整列表?

  15. 15

    Common Lisp-如何使用关键字参数对函数进行调用/应用?

  16. 16

    关键字和字典中的函数

  17. 17

    嵌套函数中“ this”关键字的范围?

  18. 18

    创建一个在原始函数中设置关键字参数的局部函数

  19. 19

    快速的函数调用:自关键字与不关键字

  20. 20

    在robotframework中调用关键字时如何限制预定义的参数值

  21. 21

    在方法调用中通过位置和关键字传递参数“算法”

  22. 22

    调用带有关键字参数的方法

  23. 23

    自调用函数中不带var关键字的变量如何工作?

  24. 24

    构造函数调用绑定到Java中的new关键字?

  25. 25

    在forEach中调用类函数:Javascript如何处理“ this”关键字

  26. 26

    这段代码中如何使用super关键字来调用父类的构造函数?

  27. 27

    Racket中关键字和函数参数默认值的宏

  28. 28

    将时间单位作为变量传递给时间增量函数中的关键字参数。

  29. 29

    将关键字参数传递给Python线程中的目标函数

热门标签

归档