Keras是:
简单——但不简单。Keras 减少了开发人员的认知负担 ,让您可以专注于真正重要的问题部分。 灵活——Keras 采用逐步揭示复杂性的原则:简单的工作流程应该快速而简单,而任意高级的工作流程应该可以通过建立在你已经学到的东西之上的清晰路径来实现。 强大——Keras 提供了行业实力的性能和可扩展性:它被包括 NASA、YouTube 和 Waymo 在内的组织和公司所使用。TensorFlow 2是一个端到端的开源机器学习平台。您可以将其视为可 微分编程的基础结构层。它结合了四个关键能力:
在 CPU、GPU 或 TPU 上高效执行低级张量运算。 计算任意可微分表达式的梯度。 将计算扩展到许多设备,例如数百个 GPU 的集群。 将程序(“图形”)导出到外部运行时,例如服务器、浏览器、移动和嵌入式设备。Keras 是 TensorFlow 2 的高级 API:一种用于解决机器学习问题的平易近人、高效的接口,重点是现代深度学习。它为开发和交付具有高迭代速度的机器学习解决方案提供了基本的抽象和构建块。
Keras 使工程师和研究人员能够充分利用 TensorFlow 2 的可扩展性和跨平台功能:您可以在 TPU 或大型 GPU 集群上运行 Keras,并且可以导出 Keras 模型以在浏览器或移动设备上运行设备。
[hidecontent type="logged" desc="隐藏内容:登录后可查看"]
Keras 的核心数据结构是层和模型。最简单的模型类型是Sequential
model,层的线性堆栈。对于更复杂的架构,您应该使用Keras 函数式 API,它允许您构建任意层图或通过子类化完全从头开始编写模型。
这是Sequential
模型:
from tensorflow.keras.models import Sequential
model = Sequential()
堆叠图层非常简单.add()
:
from tensorflow.keras.layers import Dense
model.add(Dense(units=64, activation='relu'))
model.add(Dense(units=10, activation='softmax'))
一旦你的模型看起来不错,配置它的学习过程.compile()
:
model.compile(loss='categorical_crossentropy',
optimizer='sgd',
metrics=['accuracy'])
如果需要,您可以进一步配置优化器。Keras 的哲学是让简单的事情变得简单,同时允许用户在需要时完全控制(最终控制是通过子类化轻松扩展源代码)。
model.compile(loss=tf.keras.losses.categorical_crossentropy,
optimizer=tf.keras.optimizers.SGD(
learning_rate=0.01, momentum=0.9, nesterov=True))
您现在可以批量迭代训练数据:
# x_train and y_train are Numpy arrays.
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 功能与 TensorFlow 相结合GradientTape
:
import tensorflow as tf
# Prepare an optimizer.
optimizer = tf.keras.optimizers.Adam()
# Prepare a loss function.
loss_fn = tf.keras.losses.kl_divergence
# Iterate over the batches of a dataset.
for inputs, targets in dataset:
# Open a GradientTape.
with tf.GradientTape() as tape:
# Forward pass.
predictions = model(inputs)
# Compute the loss value for this batch.
loss_value = loss_fn(targets, predictions)
# Get gradients of loss wrt the weights.
gradients = tape.gradient(loss_value, model.trainable_weights)
# Update the weights of the model.
optimizer.apply_gradients(zip(gradients, model.trainable_weights))
有关 Keras 更深入的教程,您可以查看:
面向工程师的 Keras 简介:https://keras.io/getting_started/intro_to_keras_for_engineers/ 面向研究人员的 Keras 简介:https://keras.io/getting_started/intro_to_keras_for_researchers/ 开发人员指南:https://keras.io/guides/ 其他学习资源:https://keras.io/getting_started/learning_resources/Keras 以tensorflow.keras
. 要开始使用 Keras,只需安装 TensorFlow 2。
Keras 有夜间版本(keras-nightly
在 PyPI 上)和稳定版本(keras
在 PyPI 上)。每晚发布的 Keras 版本通常与相应版本的版本兼容tf-nightly
(例如keras-nightly==2.7.0.dev2021100607
应该与 一起使用tf-nightly==2.7.0.dev2021100607
)。我们不维护夜间版本的向后兼容性。对于稳定版本,每个 Keras 版本都映射到特定稳定版本的 TensorFlow。
下表显示了 TensorFlow 版本和 Keras 版本之间的兼容版本映射。
所有发布分支都可以在GitHub:https://github.com/keras-team/keras/releases上找到。
所有发布的二进制文件都可以在Pypi:https://pypi.org/project/keras/#history上找到。
您可以提出问题并加入开发讨论:
TensorFlow 论坛:https://discuss.tensorflow.org/ Keras 谷歌:https://groups.google.com/forum/#!forum/keras-users[/hidecontent]