Keras

提供者:刘晓
地址:https://keras.io/#installation

Keras 简介

Keras 最初是作为 ONEIROS 项目(开放式神经电子智能机器人操作系统)研究工作的一部分而开发的。Keras是一个高层神经网络API,纯Python编写而成并基Tensorflow、Theano以及CNTK后端。Keras 为支持快速实验而生,能够把你的idea迅速转换为结果,如果你有如下需求,请选择Keras:

  • 简易和快速的原型设计(keras具有高度模块化,极简,和可扩充特性)
  • 支持CNN和RNN,或二者的结合
  • 无缝CPU和GPU切换

Keras适用的Python版本是:Python 2.7-3.6

Keras官方英文文档

Keras官方中文文档

Keras GitHub

Keras 安装

在安装 Keras 之前,请安装以下后端引擎之一:TensorFlow,Theano,或者 CNTK。官方推荐 TensorFlow 后端

还可以考虑安装一下可选依赖:

  • cuDNN (如果你计划在 GPU 上运行 Keras,建议安装)。
  • HDF5 和 h5py (如果你需要将 Keras 模型保存到磁盘,则需要这些)。
  • graphviz 和 pydot (被可视化工具用来绘制模型图)。

安装 Keras ,有两种方法:

  1. 使用 PyPI 安装 Keras (推荐)

    sudo pip install keras  
    pip install keras   # virtualenv 虚拟环境下
    
  1. 使用 Github 源码安装 Keras:
    使用 git 来克隆 Keras:

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

然后,cd 到 Keras 目录并且运行安装命令:

cd keras  
sudo python setup.py install  

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 的一个核心原则是使事情变得相当简单,同时又允许用户在需要的时候能够进行完全的控制(终极的控制是源代码的易扩展性)。

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

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

# x_train 和 y_train 是 Numpy 数组 -- 就像在 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文件夹中,你将找到使用真实数据的示例模型:

  • CIFAR10 小图片分类:使用CNN和实时数据提升
  • IMDB 电影评论观点分类:使用LSTM处理成序列的词语
  • Reuters(路透社)新闻主题分类:使用多层感知器(MLP)
  • MNIST手写数字识别:使用多层感知器和CNN
  • 字符级文本生成:使用LSTM
  • 基于多层感知器的softmax多分类:

相关论文

涉及使用Keras实现的算法及论文后续补上

小知识: Keras (κέρας) 在希腊语中意为 号角 。它来自古希腊和拉丁文学中的一个文学形象,首先出现于 《奥德赛》 中, 梦神 (Oneiroi, singular Oneiros) 从这两类人中分离出来:那些用虚幻的景象欺骗人类,通过象牙之门抵达地球之人,以及那些宣告未来即将到来,通过号角之门抵达之人。 它类似于文字寓意,κέρας (号角) / κραίνω (履行),以及 ἐλέφας (象牙) / ἐλεφαίρομαι (欺骗)。