Skip to content

Latest commit

 

History

History
128 lines (91 loc) · 4.29 KB

training-guide.md

File metadata and controls

128 lines (91 loc) · 4.29 KB

Training Guide

训练代码基于cs230的Pytorch模版。如果看完这个教程对代码还有不理解的地方,可以参考原模版的Guideline。

你可以先看看代码结构。

Dataset

预训练模型采用标贝的中文标准女声音库,该数据集共有一万个句子,每个句子都有韵律词,韵律短语,语调短语三级切分。

原始的标贝数据集是/data/biaobei/000001-010000.txt这个文件。处理这个数据集主要用到了这些脚本:

data/biaobei/preprocess.py    # 初步转换,便于后续处理
build_biaobei_dataset.py      # 转换成训练代码需要的格式
build_embedding.py            # 根据数据集提取embedding
build_vocab.py                # 构建单词,标签与数字的映射

处理后的biaobei1是韵律词,biaobei2是韵律短语,baiobei3是语调短语。

Custom Dataset

格式转换: 如果你想用自己的数据集,你必须将你的数据集转换成以下格式:

/你的数据集的名字
  /train
  	label.txt
  	pos.txt
  	sentences.txt
  /test
  /val
  • 包含三个文件夹,名字分别为train, val, test 分别用于训练,验证和测试。
  • 每个文件夹包含三个文件,每一行存储一个句子的相关信息, 句子中的词用空格分隔。
    • Labels: 存储标签
    • Pos: 存储词性
    • sentences: 存储句子

构建字典: 完成格式转换之后,执行以下脚本:

python build_vocab.py --data_dir 你的数据集的位置
# 其他参数看代码

这个脚本会扫描所有句子,包括训练,验证,测试集,然后提取出不重复的标签,词,词性标准构成三个字典,分别存储在tags.txt, words.txt, pos.txt 中。除此之外,脚本还会存储一些数据集的元信息在dataset_params.json中。

提取embedding

我们使用的是腾讯的Embedding,下载下来,里面有一个Tencent_AILab_ChineseEmbedding.txt文件,把它放在embedding文件夹下。

然后运行以下脚本,得到一个embedding200.npy:

python build_embedding.py --words_dir 你的数据集的位置 --out_dir 你想存储embedding的位置
# 其他参数看代码

这个脚本的主要作用是提取embedding,并建立一个和之前构建的字典一个顺序的embedding字典。例如words.txt 第一个词是 ,则npy数组的第一个元素就是的embedding。

标贝数据集的embedding 下载方法

sh embedding/download_biaobei_embedding.sh

Train

  • 从头开始
# 以训练biaobei2为例
python train.py --data_dir data/biaobei2 --model_dir experiments/base --emb_dir embedding/biaobei 
  • 继续上一次的训练
python train.py --data_dir data/biaobei2 --model_dir experiments/base --emb_dir embedding/biaobei --restore_file last

Evaluation

与训练类似

python evaluate.py --data_dir data/biaobei2 --model_dir experiments/base --emb_dir embedding/biaobei

Predict

运行交互式命令行实时预测。

python demo.py

如果你要批量预测,可以参考demo的代码自己写脚本。

Code Structure

.
├── core
│   ├── inference             # inference专用代码, 用于其他代码调用
│   ├── model                 # 模型定义, 训练和inference都会用到
│   ├── __init__.py
│   └── utils.py              # 训练和inference都会用到的一些helper函数
├── data                 			# 训练数据
├── embedding             		# 训练用的embedding
├── experiments               # 保存训练的结果,模型,参数等
├── pretrained                # 预训练模型, 包含embedding。
├── build_biaobei_dataset.py  # 构建biaobei数据集。
├── build_embedding.py        # 提取embedding, 具体见下文
├── build_vocab.py            # 构建字母表     
├── search_hyperparams.py     # 用于搜索最优的超参数
├── synthesize_results.py     # 将experiments文件夹里的实验结果汇总            
├── evaluate.py
├── train.py
├── demo.py
├── training-guide.md
└── README.md