为「人」设计的深度学习接口:Keras 十年演进与多后端新格局
实体定义:Keras 是一个用 Python 编写的开源深度学习高级 API,2015 年由当时任职于谷歌的工程师 François Chollet 创建,现以 Keras 3 的形态同时运行于 TensorFlow、JAX 与 PyTorch 三种后端之上[1][2]。它的定位从来不是替代底层框架,而是把底层框架的算力包装成人人可读的接口——官方称之为「面向人类的深度学习」。
Keras 的核心设计原则之一是「复杂度的渐进式披露」(progressive disclosure of complexity):新手五行为能跑通第一个模型,专家需要时又能下钻到每一层的细节。
——转述自 keras.io 官方文档对设计理念的说明[1]起源故事:2015 年的那个副业项目
把时间拨回 2014 年底到 2015 年初:深度学习正在复苏,但 Theano 的代码晦涩、Caffe 配置繁琐,普通开发者想训练一个神经网络,往往要先跟框架搏斗一周。时任谷歌工程师的 François Chollet 决定做一个「自己愿意日常使用」的封装层:模型像乐高一样按层拼装,编译训练只需一行 compile。项目于 2015 年春开源,名字取自希腊语中的「号角」(κέρας)一词。
这个副业项目的增长速度超出了所有人的预期:凭借极简的函数式 API 和近乎零成本的入门体验,Keras 迅速成为学术界教学演示的首选,也长期位居 GitHub 上星标数量最多的深度学习框架之列[2][4]。Chollet 本人也因此声名鹊起——他后来写出的《Deep Learning with Python》成为一代入门者的标准教材,2019 年提出的抽象推理基准 ARC 则引发了此后持续多年的「衡量真正智能」大讨论[5][7]。
回看这段历史会发现一个有趣的规律:Keras 的每次跃迁都踩在行业转折点上。它不是最早的框架,却总能在框架战争的关键节点上,把自己变成那个「所有人都先用它入门」的友好层。
API 设计哲学拆解:三条支柱撑起友好层
层从上到下一摞到底,适合教科书式的直连网络。初学者的第一行 Keras 代码几乎都从这里开始。
把层当函数调用、任意分叉合并,多输入多输出与残差连接都能自然表达,是工程实践中使用率最高的写法。
继承 Model 类手写前向逻辑,为研究型需求保留完全的自由度,也完成了向 Python 原生风格的靠拢。
三套 API 共享同一套 Layer 与 Model 抽象,可以按需混搭,这正体现了「渐进式披露复杂度」:同一份知识结构覆盖从入门到科研的全谱段,而不必中途换框架重学。模块化、可扩展、纯 Python 实现,这三条在项目早期 README 里写下的原则,十年间几乎没有动摇过。
友好层 strategy 的另一块拼图是预训练生态。早在深度学习还属小众的年代,Keras 就把 VGG、ResNet 等经典网络做成一行代码即可加载的内置应用,权重自动下载,迁移学习从论文里的操作变成了初学者十分钟就能跑通的实验。后来陆续出现的视觉与文本领域库延续了这个思路:把成熟模型连同预处理逻辑一起封装好,让使用者专注于业务数据而不是工程细节。对个人学习者而言,这意味着入门曲线足够平缓;对团队而言,这意味着新人交接成本显著低于自研一套底层封装。
多后端演进线:从 Theano 到 TF、JAX 与 PyTorch
- 2015独立项目起步,Theano 打底
首版以 Theano 为计算后端;同年年底谷歌开源 TensorFlow 后,Keras 很快加入了对 TF 的支持,用户量随之起飞。
- 2017进入 TensorFlow 官方仓库
TensorFlow 1.4 起内置 tf.keras 模块,Keras 从「第三方封装」升格为官方高级 API 的候选[6]。
- 2019TF 2.0 时代:Keras 成为默认接口
TensorFlow 2.0 把 Keras 确立为主要的高级 API,「import tensorflow as tf; model = tf.keras.Sequential(...)」成为全球教程的标准开头。
- 2023Keras 3 发布:一次彻底的多后端重写
年初以 Keras Core 名义试水,11 月正式发布 Keras 3.0:代码全部重写,同一套模型定义可无缝切换 JAX、TensorFlow 或 PyTorch 执行[3]。后续版本还陆续引入了更多实验性后端,细节以官方文档为准。
- 2024 之后生态整合期
官方将计算机视觉与自然语言处理两大领域库逐步整合进统一的 KerasHub 体系(沿革以 keras-team 组织下的仓库说明为准),框架重心从「能跑」转向「开箱即用的预训练资产」。
这条演进线的底层逻辑值得玩味:框架战争打到最后,胜负手不再是执行速度本身,而是谁的接口能同时兼容多个引擎。Keras 3 的答案是把「写模型的语法」和「跑模型的引擎」彻底解耦——研究阶段用 JAX 求快,部署时切到 TF 或 PyTorch 求稳,代码一行不改。
入门代码示例块:五行核心逻辑
// 一个可直接运行的 Keras 3 手写数字分类网络(MNIST)
import keras
from keras import layers
model = keras.Sequential([
layers.Input(shape=(28, 28)),
layers.Flatten(),
layers.Dense(128, activation="relu"),
layers.Dropout(0.2),
layers.Dense(10, activation="softmax"),
])
model.compile(
optimizer="adam",
loss="sparse_categorical_crossentropy",
metrics=["accuracy"],
)
model.fit(x_train, y_train, epochs=5, validation_split=0.1)
这段代码不依赖任何特定后端语法:无论底下是 TensorFlow、JAX 还是 PyTorch,模型定义完全一致。想切换引擎,只需在导入前设置环境变量或调用相应接口指定 backend,这正是 Keras 3 主打的「一次编写、多端运行」。
给初学者一个务实的建议:不要在框架选型上过度消耗时间。先用这套五行模板把数据读入、训练、验证的完整闭环跑通,理解每一行在做什么,再回头调整网络结构。深度学习真正的难点从来不在 API 语法的记忆量,而在于数据质量、验证设计与对业务指标的理解——这些能力在任何框架里都是通用的。
学习资源清单:按顺序学效率最高
常见问题
Keras 和 TensorFlow 是什么关系?
Keras 是独立的高级 API 项目,自 2017 年起被集成进 TensorFlow,并在 TF 2.0 中成为默认高级接口;Keras 3 之后它又同时支持 JAX 和 PyTorch,因此可以理解为「跑在多家引擎之上的标准建模语言」[6]。
Keras 3 支持哪些后端?该怎么选?
目前官方支持 TensorFlow、JAX 与 PyTorch 三大后端,后续还加入了实验性后端。经验法则:追求快速实验选 JAX,看重部署生态选 TensorFlow,团队已有 PyTorch 资产就选 PyTorch;最新支持列表以官网为准[1]。
新手应该从 Sequential 还是函数式 API 入手?
从 Sequential 入手建立直觉,第二个模型就改用函数式 API 写。函数式写法覆盖了实际工程中绝大多数网络结构,学会它基本就够了;子类化留到需要特殊前向逻辑时再学。
Keras 适合生产环境吗?
适合。它长期运行在大量互联网公司的推荐与视觉系统中,Keras 3 的多后端设计还允许训练与部署使用不同引擎。生产可用性最终取决于所选后端的工程配套,而非 Keras 这一层本身。
直接学 PyTorch 是不是更好?
如果目标是科研且课题组主用 PyTorch,直接学 PyTorch 没问题;如果目标是快速做出能用的模型、或在多框架团队间迁移,先掌握 Keras 的成本更低。两者并不互斥——Keras 3 本身就能把模型跑在 PyTorch 之上[2]。
参考资料
- 来源:Keras 官方文档站(设计理念、多后端说明) https://keras.io/
- 来源:GitHub · keras-team/keras 官方仓库 https://github.com/keras-team/keras
- 来源:GitHub Releases · Keras 3.0.0 多后端版本发布记录 https://github.com/keras-team/keras/releases/tag/v3.0.0
- 来源:Wikipedia · Keras 词条(项目沿革与作者信息) https://en.wikipedia.org/wiki/Keras
- 来源:arXiv:1911.01547 · On the Measure of Intelligence(Chollet, 2019) https://arxiv.org/abs/1911.01547
- 来源:TensorFlow 官方指南 · 使用 Keras 构建模型 https://www.tensorflow.org/guide/keras
- 来源:ARC Prize 官方网站(ARC 基准与年度赛事) https://arcprize.org/
青衣网络 AI 观察团队 · 最后更新 2026-08-25