深度学习
文件执行先后顺序及具体用法归纳
- 执行顺序
segment_chinese.py → generate_vocab.py
→ data.py → data_utils.py (被调用) →
validation.py
- 各文件具体用法
① segment_chinese.py
-
功能 :中文文本分词预处理
-
执行时机 :数据准备阶段第一步
-
用法 :
python segment_chinese.py
-
关键流程 :
- 使用 jieba 对 data/cn.txt 进行分词
- 生成 data/cn_segmented.txt
- 自动备份原始文件为 .backup 格式
- 输出分词样例和后续操作指引(重命名文件→生成词汇表→训练模型)
-
依赖 :需安装 jieba 库(脚本内置自动安装逻辑)
② generate_vocab.py -
功能 :生成中英文词汇表
-
执行时机 :分词完成后,模型训练前
-
用法 :
python generate_vocab.py
-
关键流程 :
- 处理中文:使用 jieba 分词并保留单字,确保覆盖度
- 处理英文:使用正则提取单词和标点
- 生成格式为 word\tcount 的词汇表文件( cn.txt.vocab.tsv 和 en.txt.vocab.tsv )
- 自动添加特殊标记(
, , ,)
-
输出 :词汇量统计和文件保存路径
③ data.py -
功能 :数据加载与预处理核心模块
-
执行时机 :模型训练/预测时被调用
-
用法 :通过 data_read 函数被 train.py 或 predict.py 导入使用
-
关键流程 :
# 示例调用 input_max, target_max, en_dict, cn_dict, data, target_idx2word = data_read('data/', 'train')
-
核心功能 :
- 读取中英文文本文件和词汇表
- 为解码器输入/输出添加
和标记 - 返回词汇表大小、字典映射和格式化训练数据
④ utils/data_utils.py
-
功能 :数据处理工具函数库
-
执行时机 :被 data.py 等模块实时调用
-
核心函数 :
- load_vocab() :加载词汇表并创建 word_to_index 映射
- convert_words_to_indices() :将文本序列转换为模型输入张量
- fill_with_pad() :在结束标记后填充
-
特点 :模块加载时自动执行 load_vocab() ,确保全局词汇表可用
⑤ utils/validation.py -
功能 :模型验证与评估工具
-
执行时机 :模型训练完成后
-
用法 :
python -m utils.validation --model model/train/last.pth --output validation_report.json
-
核心验证内容 :
- 模型结构(编码器/解码器层数、参数数量)
- 权重检查(NaN/无穷值检测、统计信息)
- 输入输出验证(前向传播测试、形状检查)
- 注意力权重归一化验证
- 梯度流检查(反向传播测试)
-
输出 :JSON格式验证报告和控制台摘要
- 关键依赖关系
graph LR
A[segment_chinese.py] -->|生成分词文
件| B[generate_vocab.py]
B -->|生成词汇表| C[data.py]
C -->|调用工具函数| D[utils/
data_utils.py]
E[train.py] -->|训练模型| F[utils/
validation.py]