当前位置: 首页 > news >正文

李沐《动手学深度学习》——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

相关文章:

  • 小白学习:rag向量数据库
  • 《C++ primer》第四章
  • FOC 控制笔记【二】无感控制、滑膜观测器和PLL
  • 用《设计模式》的角度优化 “枚举”
  • Python零基础学习第三天:函数与数据结构
  • PyTorch深度学习在硬件与资源限制下分布式训练和多GPU加速等技术的实例代码
  • 从零构建高可用MySQL自动化配置系统:核心技术、工具开发与企业级最佳实践
  • Linux 指定命令行前后添加echo打印内容
  • Unity URP渲染管线烘焙场景教程
  • docker装Oracle
  • Spring MVC源码分析のinit流程
  • Rust语言:开启高效编程之旅
  • 线程安全---java
  • 阿里发布新开源视频生成模型Wan-Video,支持文生图和图生图,最低6G就能跑,ComFyUI可用!
  • 比特币中的相关技术
  • Oracle数据恢复:闪回查询
  • 工程化与框架系列(26)--前端可视化开发
  • 【芯片验证】verificationguide上的36道UVM面试题
  • 模型压缩技术(二),模型量化让模型“轻装上阵”
  • USB2.0 学习(1)字段和包
  • 建外贸网站比较好的公司/东莞seo网络培训
  • iis7.0网站错误代码解决/推广普通话手抄报图片大全
  • 网站如何做团购/网络营销公司好不好
  • 律师网站建设建议/郑州seo培训
  • wordpress企业网站建设/武汉武汉最新
  • 做网站找雷鸣/万能搜索引擎网站