Keras: The Python Deep Learning library

You have just found Keras.

Keras是用Python编写的高级神经网络API,能够在TensorFlowCNTKTheano之上运行. 它的开发着眼于实现快速实验. 能够以最小的延迟将想法付诸实践是进行良好研究的关键.

Use Keras if you need a deep learning library that:

  • 允许轻松快速地进行原型制作(通过用户友好性,模块化和可扩展性).
  • 支持卷积网络和循环网络,以及两者的组合.
  • 在CPU和GPU上无缝运行.

阅读Keras.io上的文档.

Keras兼容于: Python 2.7-3.6 .


Multi-backend Keras and tf.keras:

目前,我们建议使用TensorFlow后端的多后端tf.keras在TensorFlow 2.0中切换到tf.keras . tf.keras得到更好的维护,并与TensorFlow功能(渴望执行,发行支持等)具有更好的集成.

Keras 2.2.5是Keras实现2.2.* API的最新版本. 这是仅支持TensorFlow 1(以及Theano和CNTK)的最新版本.

当前版本是Keras 2.3.0,它对API进行了重大更改,并增加了对TensorFlow 2.0的支持. 2.3.0版本将是多后端Keras的最后一个主要版本. 多后端tf.kerastf.keras取代.

多后端Keras中存在的错误将仅在2020年4月之前修复(作为次要版本的一部分).

有关Keras未来的更多信息,请参阅Keras会议说明 .


Guiding principles

  • 用户友好. Keras是为人类而非机器设计的API. 它把用户体验放在首位. Keras遵循降低认知负担的最佳实践:提供一致且简单的API,将常见用例所需的用户操作数量降至最低,并针对用户错误提供清晰且可操作的反馈.

  • 模块化. 模型被理解为独立的,完全可配置的模块的序列或图形,这些模块可以以尽可能少的限制插入在一起. 特别是,神经层,成本函数,优化器,初始化方案,激活函数和正则化方案都是独立的模块,您可以将其组合以创建新模型.

  • 易于扩展. 新模块很容易添加(作为新类和函数),而现有模块提供了足够的示例. 能够轻松创建新模块可以实现整体表达,使Keras适合进行高级研究.

  • 使用Python . 没有以声明格式的单独的模型配置文件. 模型以Python代码描述,该代码紧凑,易于调试,并且易于扩展.


Getting started: 30 seconds to Keras

Keras的核心数据结构是模型 ,即组织层的一种方式. 最简单的模型类型是Sequential模型,即层的线性堆栈. 对于更复杂的体系结构,应使用Keras功能API ,该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的核心原则是使事情变得相当简单,同时允许用户在需要时完全控制自己(最终控制是源代码的易于扩展).

model.compile(loss=keras.losses.categorical_crossentropy,
              optimizer=keras.optimizers.SGD(lr=0.01, momentum=0.9, nesterov=True))

您现在可以分批迭代训练数据:

# x_train and y_train are Numpy arrays --just like in the Scikit-Learn API.
model.fit(x_train, y_train, epochs=5, batch_size=32)

另外,您可以手动将批处理喂入模型:

model.train_on_batch(x_batch, y_batch)

一行评估您的表现:

loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)

或根据新数据生成预测:

classes = model.predict(x_test, batch_size=128)

建立问题回答系统,图像分类模型,神经图灵机或任何其他模型都一样快. 深度学习背后的思想很简单,那么为什么实施这些思想会很痛苦?

有关Keras的更深入的教程,您可以查看:

在存储库的examples文件夹中,您将找到更高级的模型:使用内存网络进行问答,使用堆叠LSTM生成文本等.


Installation

在安装Keras之前,请安装其后端引擎之一:TensorFlow,Theano或CNTK. 我们建议使用TensorFlow后端.

您还可以考虑安装以下可选依赖项

然后,您可以安装Keras本身. 有两种安装Keras的方法:

  • 从PyPI安装Keras(推荐):

注意:这些安装步骤假定您在Linux或Mac环境中. 如果您使用的是Windows,则需要删除sudo才能运行以下命令.

sudo pip install keras

如果您使用的是virtualenv,则可能要避免使用sudo:

pip install keras
  • 或者:从GitHub来源安装Keras:

首先,使用git克隆Keras:

git clone https://github.com/keras-team/keras.git

然后, cd到Keras文件夹并运行install命令:

cd keras
sudo python setup.py install

Configuring your Keras backend

默认情况下,Keras将使用TensorFlow作为其张量操纵库. 请按照以下说明配置Keras后端.


Support

您可以提出问题并参与开发讨论:

您还可以(仅)在GitHub issue中发布错误报告和功能请求 . 请务必先阅读我们的指南 .


Why this name, Keras?

Keras(κέρας)在希腊语中是指号角 . 这是来自古希腊和拉丁文学文学形象的参考, 奥德赛 ,其中梦灵(Oneiroi,奇异Oneiros)是那些谁欺骗人与虚假的异象,谁通过象牙门到达地球之间的分先发现,以及那些宣布将要过去的未来的人们,他们是通过号角之门到达的. 这是关于单词κέρας(角)/κραίνω(充填)和ἐλέφας(象牙)/ἐλεφαίρομαι(欺骗)的戏剧.

Keras最初是作为ONEIROS(开放式神经电子智能机器人操作系统)项目研究工作的一部分而开发的.

"奥尼罗伊(Angiroi)超出了我们的解释范围-谁能确定他们讲的是什么故事?并不是所有男人想要的东西都成为现实.那儿有两扇门可以通向稍纵即逝的奥尼罗(Oiroiro);一扇是用角制成的,一扇是象牙.通过锯牙的象牙是骗人的,传达的信息是不会实现的;通过打磨的角出来的象牙后面有真理,这对于看到它们的人来说是可以实现的." 荷马,奥德赛19.562 ff(Shewring翻译).