来自Transformers的双向编码器表示(BERT)

http://zh-v2.d2l.ai/chapter_natural-language-processing-pretraining/bert.html


there should be [0,0,0,1,1,1]

I agree with you, np.repeat( [0,1], 3 ) = [0,0,0,1,1,1]

在下一句预测里面为什么要先flatten encoded_X 啊? 根据后面, 不应该只输入<cls>对应的特征吗?

encoded_X = torch.flatten(encoded_X, start_dim=1)  #这里为什么不是 encoded_X[:,0,:] ?
# NSP的输入形状:(batchsize,num_hiddens)
nsp = NextSentencePred(encoded_X.shape[-1])
nsp_Y_hat = nsp(encoded_X)
nsp_Y_hat.shape

我觉得应该是:

nsp_input = encoded_X[:, 0, :]
print("nsp_input", nsp_input.shape)
# NSP的输入形状:(batchsize,num_hiddens) 只需要输入<cls>的特征
nsp = NextSentencePred(nsp_input.shape[-1])
nsp_Y_hat = nsp(nsp_input)
nsp_Y_hat.shape