【aidoczh.com】深度学习框架Keras中文文档上线
一、Keras中文文档
是基于Keras官方文档翻译,地址为 http://www.aidoczh.com/keras/
二、Keras介绍
Keras 是一个用 Python 编写的深度学习 API,能够在 JAX、TensorFlow 或 PyTorch 上运行。
Keras 是:
- 简单 – 但并不简陋。Keras 降低了开发者的 认知负担 以便让你专注于真正重要的问题部分。
- 灵活 – Keras 采用 逐步披露复杂性 的原则:简单工作流程应该快速且简单,而任意复杂的工作流程应该通过清晰的路径变得 可行,该路径建立在你已经学习的基础上。
- 强大 – Keras 提供行业级的性能和可扩展性:被包括 NASA、YouTube 和 Waymo 在内的组织使用。
Keras 3 是一个多框架的深度学习 API
作为一个多框架 API,Keras 可用于开发与任何框架兼容的模块化组件 – JAX、TensorFlow 或 PyTorch。
这种方法有几个关键好处:
- 始终为你的模型获得最佳性能。 在我们的基准测试中,我们发现 JAX 通常在 GPU、TPU 和 CPU 上提供最佳的训练和推理性能 – 但结果因模型而异,因为非 XLA 的 TensorFlow 在 GPU 上有时会更快。动态选择能够为你的模型提供最佳性能的后端的能力 不需要更改任何代码,意味着你总是可以以最高的效率进行训练和服务。
- 最大化可用生态系统的表面。 任何 Keras 模型都可以作为 PyTorch 的
Module
实例化,可以导出为 TensorFlow 的SavedModel
,或可以实例化为无状态的 JAX 函数。这意味着你可以将你的 Keras 模型与 PyTorch 生态系统包、全系列 TensorFlow 部署和生产工具以及 JAX 大规模 TPU 训练基础设施一起使用。仅需编写一个model.py
,使用 Keras API,即可访问机器学习世界提供的一切。 - 最大化开源模型发布的分发。 想发布一个预训练模型吗?希望尽可能多的人能够使用它吗?如果你用纯 TensorFlow 或 PyTorch 实现它,它将只能被大约一半的市场使用。如果你使用 Keras 实现它,则任何人都可以立即使用,无论他们选择哪个框架(即使他们不是 Keras 用户)。无额外开发成本的双倍影响。
- 使用来自任何源的数据管道。 Keras 的
fit()
/evaluate()
/predict()
例程与tf.data.Dataset
对象、PyTorchDataLoader
对象、NumPy 数组、Pandas 数据框互通 – 无论你使用的后端是什么。你可以在 PyTorch 的DataLoader
上训练 Keras + TensorFlow 模型,或在tf.data.Dataset
上训练 Keras + PyTorch 模型。
首次接触 Keras
Keras 的核心数据结构是 层 和 模型。最简单的模型类型是 Sequential
模型,一个线性的层堆栈。对于更复杂的架构,您应该使用 Keras 函数式 API,它允许构建任意的层图,或者 通过子类化完全从头编写模型。
以下是 Sequential
模型:
import keras
model = keras.Sequential()
堆叠层只需使用 .add()
:
from keras import layers
model.add(layers.Dense(units=64, activation='relu')) # 添加一个隐层
model.add(layers.Dense(units=10, activation='softmax')) # 添加输出层
一旦你的模型看起来不错,使用 .compile()
来配置学习过程:
model.compile(loss='categorical_crossentropy', # 设置损失函数
optimizer='sgd', # 设置优化器
metrics=['accuracy']) # 设置评估标准
如果需要,你可以进一步配置你的优化器。Keras 的理念是保持简单的事情简单,同时在用户需要时,允许他们完全控制(最终的控制是通过子类化轻松扩展源代码)。
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.SGD(learning_rate=0.01, momentum=0.9, nesterov=True)) # 配置优化器
你现在可以批量迭代你的训练数据:
# x_train 和 y_train 是 Numpy 数组
model.fit(x_train, y_train, epochs=5, batch_size=32) # 训练模型
在一行中评估你的测试损失和指标:
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128) # 评估模型
或者对新数据生成预测:
classes = model.predict(x_test, batch_size=128) # 生成预测
你刚看到的就是使用 Keras 的最基本方法。
然而,Keras 也是一个高度灵活的框架,适合推进最先进的研究理念。Keras 遵循 逐步披露复杂性 的原则:它使入门变得容易,同时使处理任意复杂的用例成为可能, 只需在每一步上进行增量学习。
就像您能在几行代码中训练和评估简单的神经网络一样,您可以使用 Keras 快速开发新的训练程序或最先进的模型架构。
这是一个自定义 Keras 层的示例——可以在 JAX、TensorFlow 或 PyTorch 的低级工作流程中互换使用:
import keras
from keras import ops
class TokenAndPositionEmbedding(keras.Layer):
def __init__(self, max_length, vocab_size, embed_dim):
super().__init__()
self.token_embed = self.add_weight(
shape=(vocab_size, embed_dim),
initializer="random_uniform",
trainable=True,
)
self.position_embed = self.add_weight(
shape=(max_length, embed_dim),
initializer="random_uniform",
trainable=True,
)
def call(self, token_ids):
# 嵌入位置
length = token_ids.shape[-1]
positions = ops.arange(0, length, dtype="int32")
positions_vectors = ops.take(self.position_embed, positions, axis=0)
# 嵌入 tokens
token_ids = ops.cast(token_ids, dtype="int32")
token_vectors = ops.take(self.token_embed, token_ids, axis=0)
# 两者相加
embed = token_vectors + positions_vectors
# 归一化嵌入
power_sum = ops.sum(ops.square(embed), axis=-1, keepdims=True)
return embed / ops.sqrt(ops.maximum(power_sum, 1e-7))
关于 Keras 的更深入教程,您可以查看:
支持
您可以在 Keras Google 组 中提问并加入开发讨论。
您还可以在 GitHub 问题 中发布bug报告和功能请求(仅限)。确保先阅读 我们的指南。
为什么这个名字是 Keras?
Keras (κέρας) 在古希腊语中意为 角。它是对古希腊和拉丁文学中的一个文学意象的引用,首次出现在《奥德赛》中,梦灵(Oneiroi,单数形式为 Oneiros)被分为那些用虚假幻象欺骗梦者的人,他们通过象牙之门来到地球,以及那些预告未来将会实现的人,他们通过角门来到。它在 κέρας (角) / κραίνω (实现) 和 ἐλέφας (象牙) / ἐλεφαίρομαι (欺骗) 的词语上进行了双关。
Keras 最初作为项目 ONEIROS(开放式神经电子智能机器人操作系统)的研究项目的一部分而开发。
“Oneiroi 超越我们的理解——谁能确定他们讲述了什么故事?人们所寻求的并非都能实现。通往短暂 Oneiroi 的有两个门;一个是由角制成,一个是由象牙制成。通过锯象牙而来的 Oneiroi 是欺骗性的,带着无法实现的信息;通过抛光的角而来的那些则有真相,必将实现以供看到他们的人。” 荷马,《奥德赛》第19章 562 节 (Shewring 译本)。
三、网站地图
关于Keras
入门指南
Keras工程师入门指导
Keras 3基准测试
Keras生态系统
常见问题解答
开发者指南
功能性 API
Sequential 模型
通过子类化创建新的层和模型
使用内置方法进行训练与评估
使用JAX自定义fit()
函数
使用 TensorFlow 定制 fit()
使用PyTorch自定义fit()
在JAX中编写自定义训练循环
在TensorFlow中编写自定义训练循环
在PyTorch中编写自定义训练循环
序列化与保存
自定义保存和序列化
编写您自己的回调函数
迁移学习与微调
使用JAX进行分布式训练
使用 TensorFlow 进行分布式训练
使用PyTorch进行分布式训练
使用 Keras 3 进行分布式训练
迁移Keras 2代码到Keras 3
超参数调优
Keras 3 API 文档
Keras 3 API 文档
模型 API
层 API
回调API
操作API
优化器
度量标准
损失函数
数据加载
图像数据加载
时序数据加载
文本数据加载
音频数据加载
内置小型数据集
Keras 应用程序
混合精度
多设备分布
RNG API
实用工具
Keras调优器
KerasCV
Keras自然语言处理(KerasNLP)
Keras 2 API 文档
模型 API
层API
回调 API
优化器
度量标准
损失函数
数据加载
内置小型数据集
Keras 应用程序
混合精度
实用工具
代码示例
计算机视觉
自然语言处理
结构化数据
时间序列
生成式深度学习
音频数据
强化学习
图数据
快速Keras食谱