小编Dan*_* V.的帖子

您需要将 EOS 和 BOS 代币放入自动编码器变压器中吗?

我开始了解变压器架构,但有些事情我还无法掌握。

在无解码器的转换器中,例如 BERT,分词器始终包含句子前后的标记 CLS 和 SEP。我知道 CLS 既充当 BOS,又充当提供分类信息的单个隐藏输出,但我有点不明白为什么它需要 SEP 来进行掩码语言建模部分。

我将更多地解释我期望获得的实用程序。就我而言,我想训练一个变压器作为自动编码器,所以目标=输入。不会有解码器,因为我的想法是将原始词汇的维度减少到更少的嵌入维度,然后研究(还不确定如何,但会到达那里)减少的空间以提取有用的信息。

因此,一个例子是:

string_input = "The cat is black" 
tokens_input =  [1,2,3,4]

string_target = "The cat is black"
tokens_output = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

现在在通证化的时候,假设我们是逐字通证的,那么加入BOS和EOS会有什么好处呢?

我认为这些只有在使用自注意力解码器时才有用,对吧?因此,因为在这种情况下,对于解码器来说,输出必须右移输入,向量将是:

input_string = "The cat is black EOS"
input_tokens = [1,2,3,4,5]

shifted_output_string = "BOS The cat is black"
shifted_output_tokens = [6,1,2,3,4]

output_string = "The cat is black EOS"
output_token = [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

然而,BERT 没有自注意力解码器,而是一个简单的前馈层。这就是为什么我不确定是否理解这些特殊令牌的用途。

总之,问题是:

  • 即使您没有 Transformer 解码器,您是否始终需要 BOS 和 EOS 代币?
  • 为什么没有 Transformer 解码器的 BERT 需要掩码语言模型部分的 SEP 令牌?

python transformer-model pytorch

4
推荐指数
1
解决办法
4870
查看次数

使用循环中的参数具有不同数量的 for 循环的函数

首先我想说我已经读过这个帖子:

\n\n

具有不同数量的 For 循环的函数 (python)

\n\n

虽然它看起来确实与我想知道的相似,但我(根本)对递归还不够熟练,无法使其发挥作用。

\n\n

如果我有以下片段:

\n\n
I = ["i" + str(i+1) for i in range(3)]\nJ = ["j" + str(i+1) for i in range(4)]\nK = ["k" + str(i+1) for i in range(2)]\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我可以创建一个执行以下操作的函数:

\n\n
def f(*Sets):\n    size = len(Sets)\n    if size == 1:\n        for i in Sets[0]:\n            print(i)\n    elif size == 2:\n        for i in Sets[0]:\n            for j in Sets[1]:\n                print(i,j)\n    elif size == 3:\n        for i in Sets[0]:\n            for j in Sets[1]:\n                for k …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

2
推荐指数
1
解决办法
289
查看次数

标签 统计

python ×2

python-3.x ×1

pytorch ×1

transformer-model ×1