TensorFlow 是由 Google 开发并开源的端到端开源机器学习框架广泛用于构建和训练深度学习模型如神经网络、传统机器学习模型以及部署到云端、边缘设备或移动端。其核心特点包括计算图Graph与自动微分早期版本基于静态计算图Session GraphTensorFlow 2.x 默认启用Eager Execution动态图模式使开发更直观、调试更便捷同时仍支持图模式以提升性能和部署能力。Keras 高级 API 深度集成TensorFlow 2.x 将 Keras 作为官方高级APItf.keras提供简洁、模块化的模型构建方式Sequential、Functional、Subclassing API。跨平台部署能力支持模型导出为 SavedModel 格式可部署至 TensorFlow Serving服务端、TensorFlow Lite移动端/嵌入式、TensorFlow.jsWeb 浏览器及 TensorFlow ExtendedTFX生产级 MLOps。分布式训练支持内置tf.distribute.Strategy如 MirroredStrategy、TPUStrategy轻松实现多 GPU、多节点甚至 TPU 集群训练。生态丰富配套工具如 TensorBoard可视化训练过程、TF Data高效数据流水线、TF Hub预训练模型库、TF Model GardenSOTA 模型实现等。示例使用 tf.keras 构建一个简单 CNN 分类模型importtensorflowastf modeltf.keras.Sequential([tf.keras.layers.Reshape((28,28,1),input_shape(784,)),tf.keras.layers.Conv2D(32,(3,3),activationrelu),tf.keras.layers.MaxPooling2D(),tf.keras.layers.Flatten(),tf.keras.layers.Dense(128,activationrelu),tf.keras.layers.Dense(10,activationsoftmax)])model.compile(optimizeradam,losssparse_categorical_crossentropy,metrics[accuracy])model.fit(x_train,y_train,epochs5,validation_data(x_val,y_val))TensorFlow 1.x 与 2.x 的主要区别体现在设计理念、API 层级、执行模式和生态整合上核心目标是提升易用性、一致性和生产就绪性。以下是关键差异及迁移要点✅1. 执行模式静态图 → 默认动态图Eager ExecutionTF 1.x默认使用静态计算图Graph Session需显式构建图、启动 Session 并run()调试困难、代码冗长。TF 2.xEager Execution 默认开启操作立即执行、支持 Python 原生调试如print()、pdb行为更接近 NumPy/PyTorch。✅2. API 统一Keras 成为官方高级 APITF 1.x存在多套不兼容的高层 APItf.layers,tf.keras,tf.contrib混乱且部分已弃用。TF 2.xtf.keras是唯一推荐的高级 APItf.layers、tf.contrib已移除所有模型构建、训练、评估均通过 Keras 接口完成。✅3. 函数式/子类化建模标准化TF 2.x 明确推荐三种建模方式Sequential线性堆叠Functional API多输入/输出、共享层Model Subclassing完全自定义前向逻辑适合研究TF 1.x 中子类化需手动管理变量、图依赖TF 2.x 中tf.keras.Model子类天然支持 Eager 和 Graph 模式。✅4. 变量管理与作用域简化TF 1.x依赖tf.VariableScope、tf.get_variable易出作用域冲突。TF 2.x变量即 Python 对象自动追踪tf.GradientTape、无需显式作用域tf.Variable直接创建生命周期由 Python 引用管理。✅5. 分布式训练与部署统一TF 2.x 引入tf.distribute.Strategy抽象层同一份模型代码可无缝切换 CPU/GPU/TPU/多机训练SavedModel 成为唯一推荐的序列化格式替代freeze_graph、checkpoint混用支持跨语言加载C、JS、Python。迁移旧代码TF 1.x → TF 2.x关键步骤启用兼容模式临时过渡importtensorflow.compat.v1astf tf.disable_v2_behavior()# 仅用于快速验证不推荐长期使用替换 APItf.Session()/tf.placeholder()→ 删除改用函数参数或tf.data.Datasettf.layers.*→ 全部替换为tf.keras.layers.*tf.train.*优化器 → 改用tf.keras.optimizers.*如Adamtf.summary.*→ 改用tf.summary.create_file_writerwith writer.as_default():重写训练循环若原用Session.run使用tf.function装饰器加速关键函数如train_step利用tf.GradientTape自动求导替代tf.gradients模型保存/加载替换saver.save()→model.save(path, save_formattf)SavedModel加载用tf.keras.models.load_model(path)⚠️ 注意tf.contrib在 TF 2.x 中完全移除需寻找替代方案如tensorflow-addons或社区实现。