Keras 重要特性
- 相同的代码可以在 CPU 或 GPU 上无缝切换运行。
- 具有用户友好的 API,便于快速开发深度学习模型的原型。
- 内置支持卷积网络(用于计算机视觉)、循环网络(用于序列处理)以及二者的任意组合。
- 支持任意网络架构:多输入或多输出模型、层共享、模型共享等。这也就是说, Keras能够构建任意深度学习模型,无论是生成式对抗网络还是神经图灵机
Keras 有三个后端实现:
TensorFlow 后端、Theano 后端和微软认知工具包( CNTK, Microsoft cognitive toolkit)后端。未来 Keras 可能会扩
展到支持更多的深度学习引擎。
典型的 Keras 工作流程
(1) 定义训练数据:输入张量和目标张量。
(2) 定义层组成的网络(或模型),将输入映射到目标。
(3) 配置学习过程:选择损失函数、优化器和需要监控的指标。
(4) 调用模型的 fit 方法在训练数据上进行迭代。
定义模型有两种方法:
一种是使用 Sequential 类(仅用于层的线性堆叠,这是目前最常见的网络架构),另一种是函数式 API( functional API,用于层组成的有向无环图,让你可以构建任意形式的架构)。
from keras import models
from keras import layers
model = models.Sequential()
model.add(layers.Dense(32, activation='relu', input_shape=(784,)))
model.add(layers.Dense(10, activation='softmax’))
下面是用函数式 API 定义的相同模型。
input_tensor = layers.Input(shape=(784,))
x = layers.Dense(32, activation='relu')(input_tensor)
output_tensor = layers.Dense(10, activation='softmax')(x)
model = models.Model(inputs=input_tensor, outputs=output_tensor)
利用函数式 API,你可以操纵模型处理的数据张量,并将层应用于这个张量,就好像这些层是函数一样.
配置学习过程是在编译这一步,你需要指定模型使用的优化器和损失函数,以及训练过程
中想要监控的指标:
from keras import optimizers
model.compile(optimizer=optimizers.RMSprop(lr=0.001), loss='mse', metrics=['accuracy'])
学习过程就是通过 fit() 方法将输入数据的 Numpy 数组(和对应的目标数据)传入模型:
model.fit(input_tensor, target_tensor, batch_size=128, epochs=10)