美文网首页
pytorch: Transformers入门(一)

pytorch: Transformers入门(一)

作者: 不太聪明的亚子 | 来源:发表于2020-08-05 16:39 被阅读0次

    transformer,bert等预训练语言模型火了这么久,GPT3都出来了,不能再等了,赶紧用上!

    我重点关注Bert。模型,论文啥都不多说,必须先看懂了,源码还没时间进行阅读,因为目前急需使用,所以希望抓紧时间用上。

    于是乎,我找到了Transformers这个集合了目前所有先进预训练语言模型的包,开始学习吧!

    之前是看了一些博客,写仿着写了一些代码,但是觉得有些函数,参数都是一知半解,还是得跟着官方文档从零学起哇。

    安装就不讲了,很简单,直接从术语开始。

    1. input_id:是模型的输入之一,表示token(可以理解为输入文本中的最小单位,如中文的单字)在vocab中的索引。

    给定一句话:sequence="A Titan RTX has 24GB of VRAM"

    将这句token化(就是分词):tokenized_sequence=tokenizer.tokenize(sequence) 

    得到:['A', 'Titan', 'R', '##T', '##X', 'has', '24', '##GB', 'of', 'V', '##RA', '##M']

    获取input_id:encoded_sequence=tokenizer(sequence)["input_ids"] 或者使用tokenizer.encode(sequence)

    得到每个token在词表中的索引值:[101, 138, 18696, 155, 1942, 3190, 1144, 1572, 13745, 1104, 159, 9664, 2107, 102]

    2. Attention mask:用于区分句子中参与attention和不参与attention的位置,因为要统一长度,有些句子需要padding 0,那么这些padding的位置是不需要参与attention计算的,如何让模型区分,这正是attention mask的任务。

    sequence_a="This is a short sequence."

    sequence_b="This is a rather long sequence. It is at least longer than the sequence A."

    假设让句子a补充到b的长度:padded_sequences=tokenizer([sequence_a,sequence_b],padding=True)

    查看其input_id:padded_sequences["input_ids"]

    [[101, 1188, 1110, 170, 1603, 4954, 119, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 

    [101, 1188, 1110, 170, 1897, 1263, 4954, 119, 1135, 1110, 1120, 1655, 2039, 1190, 1103, 4954, 138, 119, 102]]

    再看看其attention_mask:padded_sequences["attention_mask"]

    [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

    可以看到padding部分的attention_mask是0,就不会参与到attention计算中。

    3. Token Type IDs:用于区分当前token是属于哪个句子的

    给出两个句子:[CLS] HuggingFace is based in NYC [SEP] Where is HuggingFace based? [SEP]

    它们的token_type_ids是:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]

    4. Position IDs:因为transformer中attention计算方式与每个参与计算的token位置无关,而语序是包含信息的,所以加了position ids来明确每个token是在什么位置上,从0到最后依次编号。

    相关文章

      网友评论

          本文标题:pytorch: Transformers入门(一)

          本文链接:https://www.haomeiwen.com/subject/pxcplktx.html