赞
踩
同一个batch内要padding到一样长度,不同batch之间可以不一样
这一点,对于 (绝大多数) NLP模型都是这样的
同一个batch内要padding到一样长度
神经网络,内部大都是矩阵的运算,batch训练,需要矩阵输入
因此一个batch要padding到一样的长度,才能形成一个矩阵,像
[[1,2],
[3,4,5]]
它并不是一个矩阵,矩阵需要每个维度的长度一样才行
不同batch之间可以不一样
一般batch个句子经过embedding层之后,它的维度会变成 [batch_size, seq_length, embedding_size],
不同batch之间padding的长度可以不一样,是因为神经网络模型的参数与 seq_length 这个维度并不相关。
下面从两个常见的模型 RNN / Transformer 去细致的解释这个问题:
RNN/LSTM
如对于RNN/LSTM 等循环神经网络,seq_length 这个维度只决定 RNN/LSTM 循环计算多少步,而不会影响模型的参数,如下图:
所以你可能会发现,Pytorch中的 RNN/LSTM 默认是 [seq_length, batch_size, embedding_size] 形式的输入,和常见的 [batch_size, seq
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。