用于预训练BERT的数据集

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

all_segments.append(torch.tensor(segments + [0] * (max_len - len(segments)), dtype=torch.long))

segments list原本对应句子1和句子2的值分别为0和1。这里把位置对应的segment值也设置为0,不会confuse BERT模型吗?

所以它设置了权重列表,tokens填充的地方权重为0,在计算损失时会忽略这些地方,tokens填充的地方和segments填充0的地方是相同的。

报了个错:RuntimeError: unable to open shared memory object </torch_85159_194567204> in read-write mode在这一句for (tokens_X, segments_X, valid_lens_x, pred_positions_X, mlm_weights_X, mlm_Y, nsp_y) in train_iter:有没有知道咋解决的

解决了,将num_workers去掉就行了