李沐《动手学深度学习》——14.9. 用于预训练BERT的数据集——wiki数据集问题以及存在的其他问题

问题1:出现"file is not a zip file"

原因是链接已经失效。

解决方法:打开下面链接自行下载,需要魔法。下载完解压到特定位置。

下载链接:项目首页 - Wikitext-2-v1数据包下载:Wikitext-2-v1 数据包下载本仓库提供了一份Wikitext-2-v1的标准数据包,方便无法通过亚马逊网址下载的用户获取 - GitCode

修改load_data_wiki函数中data_dir的路径,如下:

复制代码
#@save
def load_data_wiki(batch_size, max_len):
    """加载WikiText-2数据集"""
    num_workers = d2l.get_dataloader_workers()
    #data_dir = = d2l.download_extract('wikitext-2', 'wikitext-2')  
    data_dir = 'D:\data\wikitext-2-v1\wikitext-2'  # 使用正斜杠避免转义问题
    
    paragraphs = _read_wiki(data_dir)
    train_set = _WikiTextDataset(paragraphs, max_len)
    train_iter = torch.utils.data.DataLoader(train_set, batch_size,
                                        shuffle=True, num_workers=0)
    return train_iter, train_set.vocab

问题2:'gbk' codec can't decode byte 0xae in position 96: illegal multibyte sequence

原因是读取文件的时候编码方式不一样。

解决方法:修改**def _read_wiki(data_dir)**函数,open里添加encoding = "utf-8"编码方式。

复制代码
#@save
def _read_wiki(data_dir):
    file_name = os.path.join(data_dir, 'wiki.train.tokens')
    with open(file_name, 'r',encoding = "utf-8") as f:
        lines = f.readlines()
    # 大写字母转换为小写字母
    paragraphs = [line.strip().lower().split(' . ')
                  for line in lines if len(line.split(' . ')) >= 2]
    random.shuffle(paragraphs)
    return paragraphs

问题3 :一直卡在load_data_wiki运行不下去

原因是上面函数load_data_wiki的多线程问题,在load_data_wiki函数里令num_workers=0(如下),即可解决。

复制代码
batch_size, max_len = 512, 64
train_iter, vocab = load_data_wiki(batch_size, max_len)

for (tokens_X, segments_X, valid_lens_x, pred_positions_X, mlm_weights_X,
     mlm_Y, nsp_y) in train_iter:
    print(tokens_X.shape, segments_X.shape, valid_lens_x.shape,
          pred_positions_X.shape, mlm_weights_X.shape, mlm_Y.shape,
          nsp_y.shape)
    break

#@save
def load_data_wiki(batch_size, max_len):
    """加载WikiText-2数据集"""
    num_workers = d2l.get_dataloader_workers()
    #data_dir = = d2l.download_extract('wikitext-2', 'wikitext-2-v1')
    data_dir = 'D:\data\wikitext-2-v1\wikitext-2'
    
    paragraphs = _read_wiki(data_dir)
    train_set = _WikiTextDataset(paragraphs, max_len)
    train_iter = torch.utils.data.DataLoader(train_set, batch_size,
                                        shuffle=True, num_workers=0)
    return train_iter, train_set.vocab
相关推荐
小W与影刀RPA2 分钟前
【影刀 RPA】 :文档敏感词批量替换,省时省力又高效
人工智能·python·低代码·自动化·rpa·影刀rpa
小咖自动剪辑15 分钟前
12306余票监控辅助工具详解:自动查询/多方案预约/到点提交
人工智能
得赢科技19 分钟前
智能菜谱研发公司推荐 适配中小型餐饮
大数据·运维·人工智能
victory043135 分钟前
Gradio实现中英文切换,不影响页面状态,不得刷新页面情况下
人工智能
微光闪现1 小时前
践行“科技向善”,微乐播捐赠108,888元助力唇腭裂儿童绽放笑容
人工智能
闵帆1 小时前
反演学习器面临的鸿沟
人工智能·学习·机器学习
feasibility.1 小时前
多模态模型Qwen3-VL在Llama-Factory中断LoRA微调训练+测试+导出+部署全流程--以具身智能数据集open-eqa为例
人工智能·python·大模型·nlp·llama·多模态·具身智能
CDA数据分析师干货分享1 小时前
【干货】CDA一级知识点拆解1:《CDA一级商业数据分析》第1章 数据分析思维
数据库·人工智能·数据分析·cda证书·cda数据分析师
梦梦代码精1 小时前
开源、免费、可商用:BuildingAI一站式体验报告
开发语言·前端·数据结构·人工智能·后端·开源·知识图谱
Dingdangcat861 小时前
YOLOX-L在钢丝绳损伤检测中的应用:基于300轮训练与COCO数据集的智能分类系统详解
人工智能·分类·数据挖掘