SuperAPI AI 工具集

ai-for-science-tf-to-pytorch

智能体与模型

查看项目

更新于 10-15 17:19

技能介绍

用途:把 TensorFlow/Keras 模型系统性改写为 PyTorch,并在转换后做数值精度验证。适用于目标平台无 TF 支持(如 Ascend NPU 配 torch_npu)、需要 PyTorch 生态(torchscript、ONNX、分布式)、研究代码迁移维护,或把预训练 TF 权重转为 PyTorch 格式。

主要能力:给出六步流程——分析 TF 模型、用 nn.Module 重写、转换权重、逐层验证、修复差异、端到端验证。提供 Dense、Embedding、Conv1D、LayerNorm、BatchNorm、CuDNNLSTM、标准 Keras LSTM、GELU 的层级映射与权重转换规则,并说明 K.dot 与 K.permute_dimensions 到 einsum 的对应。

关键用法与陷阱:Dense kernel 需转置 .T,Conv1D kernel 用 np.transpose(w,(2,1,0)),Embedding 直接复制;LayerNorm/BatchNorm 必须设 eps=1e-3 以匹配 TF 默认值,否则深层网络数值发散;CuDNNLSTM 的 8*H bias 需拆成 bias_ih 与 bias_hh,标准 LSTM 的 bias_hh 置零;K.dot 与 B 的倒数第二维收缩,einsum 易写错维度。

验证方式:用成对调试脚本打印每层 shape、mean、std、min、max,定位首个显著发散层;配套脚本 python scripts/compare_arrays.py reference.npz candidate.npz --atol 1e-5 --rtol 1e-4;参考 references/numerical-validation.md 与 references/weight_conversion_example.md。

限制:CuDNNLSTM 为 GPU 专用权重,转 PyTorch 后长序列浮点差异可能被下游层放大,非 CUDA 部署建议优先用 CPU 版 LSTM;TF 与 PyTorch 的 Adam epsilon、权重衰减、学习率调度存在差异,会影响训练动态。