#28845·ivy

为 Ivy 翻译器添加 TensorFlow 前端支持

作者: YushaArif99创建于 2024年12月17日更新于 2025年5月5日
标签TensorFlow FrontendToDoTranspiler

目标:

主要目标是实现 TensorFlow 的转译流程的前两个阶段:

  1. 将 TensorFlow 代码降级为 Ivy 的 TensorFlow 前端 IR。
  2. 将 TensorFlow 前端 IR 转换为 Ivy 的核心表示。
    一旦完成这些阶段,剩下的流程可以重复用于其他框架,如 JAX、PyTorch 或 NumPy。步骤如下:
source='tensorflow' → target='tensorflow_frontend'  
source='tensorflow_frontend' → target='ivy'  
source='ivy' → target='jax'/'numpy'/etc.  

这与现有的 PyTorch 转译流程相似:

source='torch' → target='torch_frontend'  
source='torch_frontend' → target='ivy'  
source='ivy' → target='jax'/'numpy'/etc.  

关键任务:

  1. 为核心转换步骤添加特定框架的原生实现:
    • 例如,实现 native_tf_recursive_transformer.py 以遍历和转换 TensorFlow 原生源代码。
    • 使用 native_torch_recursive_transformer.py 作为参考 (示例)
  2. 定义 TensorFlow 到 TensorFlow 前端 IR 的转换流程:
    • source_to_frontend_translator_config.py 中创建一个新的流程,以处理 source='tensorflow', target='tensorflow_frontend' 阶段 (示例)。
  3. 定义 TensorFlow 前端 IR 到 Ivy 的转换流程:
    • frontend_to_ivy_translator_config.py 中添加另一个流程,以处理 source='tensorflow_frontend', target='ivy' 阶段 (示例)。
  4. 为 TensorFlow 的 Keras API 添加状态类:
    • 实现 keras.Layerkeras.Model API 的状态类,它们继承自 ivy.Module
    • 参考现有的 PyTorch nn.Module 实现 (示例)
    • 这允许进行顺序降级: