用BERT实现古诗生成

本次实验使用swanlab作为训练过程跟踪的可视化工具,既可以在微信公众号Swanlab上查看,也可以在手机APP上随时跟踪,具体使用操作可以参考 手机上看SwanLab实验的两种方法

什么是SwanLab?

SwanLab是一个深度学习实验管理与训练可视化工具,由西安电子科技大学创业团队打造,融合了Weights & Biases与Tensorboard的特点,可以记录整个实验的超参数、指标、训练环境、Python版本等,并可视化图表,帮助你分析训练的表现。

在训练过程中,你可能因为各种原因无法看到当前实验的最新情况,这个时候如果能够在手机、平板上看到实验的最新进展,及时发现训练的问题,能够节省很多的时间

SwanLab也与绝大多数主流的训练框架进行了集成,包括PyTorch、HuggingFace Transformers、PyTorch Lightning、MMDetection、Ultralytics、fastai等等,可以开箱即用地与你的深度学习工作流轻松集成。

前言

之前在博客上查找些资料,想找一些能实现用bert进行古诗生成的代码进行训练,然后有利用tensorflow或者Paddlepaddle进行训练的,然后想用pytorch进行训练,于是就写了份用pytorch预训练的bert模型代码,然后使用swanlab进行日志管理,监控训练过程。

代码

数据集

诗词数据集使用的是Github上开源的数据集:简体中文诗词数据集

该数据集包含了25.4万条宋朝诗词数据,以及5.7万条唐朝诗词数据,内部数据如下:

[……,
{
    "strains": [
      "仄仄仄仄平仄仄,平平仄平○仄仄。", 
      "平平仄仄平仄平,仄仄平平?仄仄。"
    ], 
    "author": "宋太祖", 
    "paragraphs": [
      "欲出未出光辣达,千山万山如火发。", 
      "须臾走向天上来,逐却残星赶却月。"
    ], 
    "title": "日诗"
  },
……]

数据处理

首先对数据进行简单的处理。

# 指定文件夹路径
folder_path = './data'  # 替换成你的文件夹路径

# 存储所有JSON文件的数据
all_data = []

# 列出文件夹中的所有文件
for filename in os.listdir(folder_path):
    # 检查文件是否是JSON文件
    if filename.endswith('.json'):
        # 构建JSON文件的完整路径
        file_path = os.path.join(folder_path, filename)
        # 打开JSON文件并读取数据
        with open(file_path, 'r', encoding='utf-8') as file:
            data = json.load(file)
            # 将读取的数据存储到列表中
            # 每一个data是1000长度的
            for data_len in data:
                new_data = "".join(data_len["paragraphs"])
                all_data.append(new_data)

然后是构造数据读取器,在构造读取器之前,我们可以先了解下BERT的数据输入结构是什么样子的。

输入到bert的数据分为三个部分,分别是Token Embeddings、Segement Embeddings、Position Embeddings,下面分别介绍是什么意思。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值