首页 > 编程知识 正文

四六级词汇表(初中词汇表)

时间:2023-05-06 18:52:01 阅读:89365 作者:1479

词汇表因模型而异,但与其他模型相似。 因此,大多数模型使用相同的输入。 这里用使用示例详细说明。

输入ID

输入id通常是作为输入传递给模型的唯一必需参数。 这些是标签索引,标签上的数字表示生成在模型中用作输入的序列。

虽然各tokenizer的结构不同,但基本机制不变。 这是使用Bert tokenizer (WordPiecetokenizer )的例子。

fromtransformersimportberttokenizer

tokenizer=Bert tokenizer.from _预培训(' Bert-base-cased ' )

sequence=' atitanrtxhas 24 gbofvram ' tokenizer负责将序列分割为tokenizer术语表中可用的标签。

# #继续前面的脚本

tokenized _ sequence=tokenizer.tokenize (sequence )

声明序列=“a”、“三位一体”、“r”、“##T”、“#x”、“has”、“24”、“##GB”、“关”,就可以了这些可以实现最佳性能。

# #继续前面的脚本

编码顺序=tokenizer .编码顺序(顺序)

声明编码序列==[ 101、138、18696、155、1942、3190、1144、1572、13745、1104、159、9664、2107、102 ]

注意力掩码

注意遮罩是用于批量处理序列的可选参数。 此参数指示模型应注意的和不应注意的标记。

例如,考虑以下两个序列:

fromtransformersimportberttokenizer

tokenizer=Bert tokenizer.from _预培训(' Bert-base-cased ' )

序列a=' thisisashortsequence.'

sequence _ b=' thisisaratherlongsequence.itisatleastlongerthanthesequencea.'

编码序列=tokenizer .编码(序列_ a )

声明指示灯(编码序列_ a )==8

编码序列=tokenizer .编码(序列_ b )

由于assertlen(encoded_sequence_b )==19这两个序列的长度不同,因此不能直接放入同一张量中。 必须用第二个序列的长度填充第一个序列,或将第二个序列截断到第一个序列的长度。

在第一种情况下,ID列表通过填充索引来扩展。

# #继续前面的脚本

padded _ sequence _ a=tokenizer.encode (sequence _ a,最大长度=19,pad _ to _ max _ length=真) )

assert padded _ sequence _ a==[ 101,1188,1110,170,1603,4954,119,102,0,0,0,0,0,0,0,0

声明编码_序列_ b==[ 101、1188、1110、170、1897、1263、4954、119、1135、1110、1120、1655、2039、119 这指示了如何填充索引,以防止模型意识不到它们。 对于BertTokenizer,1表示需要注意的值,0表示填充值。

方法encode_plus (可以直接用于获取注意掩码。

# #继续前面的脚本

sequence _ a _ dict=tokenizer.encode _ plus (sequence _ a,最大长度=19,板到最大长度=真)

声明序列_ a _光盘=[ 101,1188,1110,170,1603,4954,119,102,0,0,0 ]

assert sequence _ a _ dict [ '注意_掩码' ]=[ 1,1,1,1,1,0,0,0,0,0,0这些要求有两个它们通常由特殊标签(如分类器标签和分隔符标签)分隔。 例如,BERT模型生成两个序列输入,如下所示:

fromtransformersimportberttokenizer

tokenizer=Bert tokenizer.from _预培训(' Bert-base-cased ' )

# # cls seq _ a seq _ b sep

sequence _ a=' huggingfaceisbasedinnyc '

sequence _ b=' whereishuggingfacebased?'

编码序列=tokenizer .编码(序列a,序列b ) ) ) )。

声明跟踪器.解码(编码序列)==' huggingfaceisbasedinnyc [ sep ] whereishugingfacebased? [SEP] '对于某些模型,这足以知道一个序列在哪里结束,另一个序列在哪里开始。 但是,其他模型(如BERT )还有一种称为段ID的附加机制。 标签类型ID是二进制掩码,标识模型中的不同序列。

可以使用encode_plus ()输出标记类型ID。

# #继续前面的脚本

encoded _ dict=tokenizer.encode _ plus (序列a,序列b ) ) ) ) )。

声明编码光盘=[ 101、20164、10932、2271、7954、1110、1359、1107、17520、102、2777、227

assert encoded _ dict [ ' token _ type _ ids ' ]=[ 0,0,0,0,0,0,0,1,1,1,1 XLNET模型等的一部分演示

标记类型ID

模型使用位置ID来识别哪个标记在哪个位置。 与嵌入各个标签位置的RNN相反,转换器不知道各个标签的位置。 为此创建了位置ID。

这些是可选的参数。 如果位置ID未传递给模型,则会自动将其创建为绝对位置嵌入。

在[0,config.max _ position _ embedding s-1 ]的范围内选择绝对位置嵌入。 有些模型使用其他类型的位置嵌入,如正弦位置嵌入或相对位置嵌入。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。