Keras 官方中文文档发布:François Chollet 感谢翻译团队的努力与贡献

[id_1984902]

Keras 官方中文文档发布:François Chollet 感谢翻译团队的努力与贡献

[id_638812811]

今年 1 月 12 日,Keras 的作者 François Chollet‏ 在推特上进行了表示。他表示由于中文读者的广泛关注,他已经在 GitHub 上开启了一个 Keras 中文文档项目。昨日,François Chollet‏ 又一次在推特上做出表示。他表示 Keras 官方文档已经基本完成了。他对翻译和校对人员两个多月来的不懈努力表示非常感谢。同时,他希望 Keras 的中文使用者能够继续助力提升文档的质量。

这一次发布的是 Keras 的官方中文文档,它经过了严谨的校对,从而提升了整体质量。然而,该项目仍在推进中,尽管目前已经有很多 API 文档和使用教程上线了,但仍有一部分内容尚未完成。在官方中文文档出现之前,就已经有开发者构建了 Keras 的中文文档。并且,许多读者都在使用 MoyanZitto 等人构建的中文文档。

以下我们将简要介绍这次官方发布的 Keras 文档。

Keras 是用 Python 编写的高级神经网络 API。它能够以 TensorFlow、CNTK 或者 Theano 作为后端运行。Keras 的开发重点在于支持快速的实验。能够以最小的时延将想法转换为实验结果,这是做好研究的关键。

如果你有如下需求,请选择 Keras:

Keras 兼容的 Python 版本包含 Python 2.7 以及 Python 3.6 。

Keras 构建起来很容易,相比其他深度学习库有优势。其一,它提供了一致且简单的 API;其二,它能提供独立且完全可配置的模块,用来构成序列或图表以完成模型;其三,新的模块能很容易地作为新的类和函数进行扩展。这样的表述或许比较抽象,但正如文档所描述的那样,我们甚至能在 30 秒内快速开始使用 Keras。所以,在坑外徘徊的小伙伴可以开心地开始你们的 30 秒。同时,准备入坑 Keras 的小伙伴也可以开心地开始你们的 30 秒。

快速开始:30 秒上手 Keras

Keras 的核心数据结构是 model,它是一种用于组织网络层的方式。其中,最简单的模型是 Sequential 模型,此模型是由多个网络层线性堆叠而成的栈。而对于更为复杂的结构,就应该使用 Keras 的函数式 API,因为它能够允许构建任意的神经网络图。

Sequential 模型如下所示:

from keras.models import Sequential

model = Sequential()

可以简单地使用 .add() 来堆叠模型:

from keras.layers import Dense

model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))

模型构建完成之后,就能够运用.compile() 去对学习过程进行配置。

model.compile(loss='categorical_crossentropy',
             optimizer='sgd',
             metrics=['accuracy'])

如果你需要,那么你可以进一步对优化器进行配置优化。Keras 有一个核心原则,即让事情变得较为简单,同时还能让用户在有需求时进行完全的控制,而终极的控制就是源代码的易扩展性。

模型进行编译,其损失函数为 keras 的 categorical_crossentropy 函数。
优化器为 keras 的 SGD 优化器,学习率为0.01, momentum=0.9, nesterov=True))

现在,你可以批量地在训练数据上进行迭代了:

y_train 是一个 Numpy 数组,就像在 Scikit-Learn API 中那样。
模型对 x_train 和 y_train 进行拟合,其中 epochs 被设置为5, batch_size=32)

或者,你可以手动地将批次的数据提供给模型:

模型在一个批次的数据上进行训练,这个批次的数据是 x_batch,对应的标签是 y_batch,然后执行训练操作 model.train_on_batch(x_batch, y_batch)

只需一行代码就能评估模型性能:

loss_and_metrics 等于 model 对 x_test 和 y_test 进行评估,批处理大小为128)

或者对新的数据生成预测:

模型在批量大小为[具体批量大小]的情况下对 x_test 进行预测,得到的结果为 classes 。128)

构建问答系统,构建图像分类模型,构建神经图灵机,或者构建其他任何模型,速度都很快。深度学习背后的思想较为简单,那么它们的实现没必要那么痛苦。

使用简介

Keras 模型的使用通常可分为顺序模型(Sequential)以及 Keras 函数式 API。顺序模型是将多个网络层进行线性堆叠。Keras 函数式 API 则是用于定义复杂模型的方法,像多输出模型、有向无环图,或者具有共享层的模型等。以下将简略介绍这两种模型的使用方式:

1.Keras 顺序模型

你能够通过把层的列表传递给 Sequential 的构造函数,以此来构建一个 Sequential 模型。

from keras.models import Sequential
from keras.layers import Dense, Activation

model = Sequential([
   Dense(32, input_shape=(784,)),
   Activation('relu'),
   Dense(10),
   Activation('softmax'),
])

也可以使用 .add() 方法将各层添加到模型中:

model = Sequential()
model.add(Dense(32, input_dim=784))
model.add(Activation('relu'))

展示了一个完整的模型,此模型是基于多层感知器 (MLP) 的 softmax 多分类。

import keras
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.optimizers import SGD

# 生成虚拟数据
import numpy as np
x_train = np.random.random((1000, 20))
y_train 等于 keras.utils 库中的 to_categorical 函数对 np.random.randint 生成的随机整数进行处理后的结果。10, size=(1000, 1)), num_classes=10)
x_test = np.random.random((100, 20))
y_test 等于将 np.random.randint 生成的随机整数转换为分类编码的结果,这个转换是通过 keras.utils.to_categorical 函数来实现的。10, size=(100, 1)), num_classes=10)

model = Sequential()
Dense(64) 是一个全连接层,它拥有 64 个隐藏神经元。
# 在第一层必须指定所期望的输入数据尺寸,在这里是一个 20 维的向量。
model.add(Dense(64, activation='relu', input_dim=20))
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))

sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy',
             optimizer=sgd,
             metrics=['accuracy'])

model.fit(x_train, y_train,
         epochs=20,
         batch_size=128)
模型在测试集 x_test 和 y_test 上进行评估,批次大小为 batch_size,评估结果赋值给 score。128)

2. Keras 函数式 API

利用函数式 API 能够很容易地复用训练好的模型。可以把任何模型当作一个层,接着通过传递一个张量来对其进行调用。需要注意的是,在调用模型时,不但会复用模型的结构,还会复用它的权重。

以下是一个函数式 API 的良好范例:存在有着多个输入以及多个输出的模型。函数式 API 让处理大量相互交织的数据流变得较为容易。

考虑下面的模型。我们要预测 Twitter 上一条新闻标题的转发数和点赞数。模型的主要输入是新闻标题本身,也就是一系列词语。不过,为了增加趣味,我们的模型添加了其他辅助输入来接收额外数据,像新闻标题的发布时间等。该模型还将通过两个损失函数进行监督学习。在模型中较早地使用主损失函数,这是深度学习模型的一种良好正则化方式。

模型结构如下图所示:

我们使用函数式 API 来达成它。详细解释可查看中文文档。

from keras.layers import Input, Embedding, LSTM, Dense
from keras.models import Model

接收一个序列,这个序列包含 100 个整数。每个整数的范围在 1 到 10000 之间。
我们可以通过传递一个参数来为任何层命名,这个参数就是 `name` 。
main_input = Input(shape=(100,), dtype='int32', name='main_input')

Embedding 层把输入序列进行编码,编码后的结果是一个稠密向量的序列,并且每个向量的维度是 512。
x = Embedding(output_dim=512, input_dim=10000, input_length=100)(main_input)

LSTM 层具有将向量序列转换为单个向量的功能,此单个向量包含着整个序列的上下文信息。
lstm_out = LSTM(32)(x)

auxiliary_output = Dense(1, activation='sigmoid', name='aux_output')(lstm_out)

该形状为( 。5,), name='aux_input')
x 等于将 lstm_out 和 auxiliary_input 进行连接的结果,即通过 keras.layers.concatenate 函数将它们组合在一起。

# 堆叠多个全连接网络层
x = Dense(64, activation='relu')(x)
x = Dense(64, activation='relu')(x)
x = Dense(64, activation='relu')(x)

# 最后添加主要的逻辑回归层
main_output = Dense(1, activation='sigmoid', name='main_output')(x)

模型由输入部分[主输入,辅助输入]和输出部分[主输出,辅助输出]组成,即 model = Model 且其输入为[主输入,辅助输入],输出为[主输出,辅助输出]

model.compile(optimizer='rmsprop', loss='binary_crossentropy',
             loss_weights=[1., 0.2])


模型对[标题数据,额外数据]进行拟合,同时对[标签,标签]进行拟合。
         epochs=50, batch_size=32)

model.compile(optimizer='rmsprop',
             loss={'main_output': 'binary_crossentropy', 'aux_output': 'binary_crossentropy'},
             loss_weights={'main_output': 1., 'aux_output': 0.2})

# 然后使用以下方式训练:
model.fit({'main_input': headline_data, 'aux_input': additional_data},
         {'main_output': labels, 'aux_output': labels},
         epochs=50, batch_size=32)

以上是一个简单案例。Keras 函数式 API 有很多应用案例。这些案例包括层级共享、有向无环图和残差网络等顶尖视觉模型。读者可以继续阅读中文文档以了解更多。

文档的后一部分主要描述 Keras 中常用的一些内容,包含 Keras 模型、层级函数、预处理过程、损失函数、最优化方法、数据集和可视化等。这些在实际使用时很多时候可以去查找相关 API 及其对应实现的功能,当然对于最基本的 API 我们是需要了解的。以下会简要介绍 Keras 的模型和层级 API,对于其他的模块,需查阅原中文文档。

Keras 模型

Keras 中有两类模型,一类是顺序模型,另一类是使用函数式 API 的 Model 类模型。这些模型具备许多共同的方法:

config = model.get_config()
模型是通过配置来创建的,创建后的模型为 model,即 model = Model.from_config(config) 。
# or, for Sequential:
创建了一个名为 model 的对象,该对象是通过 Sequential 类的 from_config 方法,使用给定的配置 config 来创建的。

from keras.models import model_from_json

json_string = model.to_json()
模型通过从 JSON 字符串中进行加载而被创建,创建后的模型即为 model = model_from_json(json_string) 所表示的模型。

from keras.models import model_from_yaml

yaml_string = model.to_yaml()
使用 yaml_string 构建了 model,构建出的模型为 model

Keras 层级

所有 Keras 层都有很多共同的函数:

layer = Dense(32)
config = layer.get_config()
重建的层 = Dense.通过配置(config)来创建

如果一个层是单个节点(也就是它不是共享层),那么你能够获取它的输入张量、输出张量、输入尺寸以及输出尺寸。

如果层有多个节点,您可以使用以下函数:

这些是 Keras 模型与层级的基本函数,文档的中心内容包含这部分以及下面描述的 API 用途与参数,其中涵盖了完整模型所需的各个模块,像数据、预处理、网络架构、训练、评估和可视化等。然而,这部分我们不会进行介绍,因为很多时候只有在遇到未知函数时我们才会去详细查阅。

Keras 官方中文文档,欢迎各位徘徊者入坑。

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

31阅读

外国教程python,python编程教学视频

2026年09月02日

25阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

26阅读

python教程大全集,python教程600集

2026年09月02日

26阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

22阅读