Skip to main content

Keras 中易于使用的 Connectionnist 时间分类

项目描述

CTCModel:Keras 的 Connectionnist 时间分类实现

PyPI 版本 执照:麻省理工学院

描述

CTCModel 使使用 Connectionnist 时间分类方法的 RNN 训练完全透明。

它直接继承自传统的 Keras 模型,并使用 TensorFlow 实现 CTC 损失和解码功能。

依赖项

  • 喀拉斯
  • 张量流
  • 六(仅作示例)

安装

$ pip install keras-ctcmodel

或者

$ git clone https://github.com/cyprienruffino/CTCModel
$ cd CTCModel $ python setup.py install --user

入门

Keras 中带有 CTCModel 的标准循环神经网络示例。

from keras.layers import LSTM, TimeDistributed, Dense, Activation, Input
from keras.optimizers import Adam
from numpy import zeros
from keras_ctcmodel.CTCModel import CTCModel as CTCModel

h_features = 10
nb_labels = 10

input_layer = Input((None, h_features))
lstm0 = LSTM(128, return_sequences=True)(input_layer)
lstm1 = LSTM(128, return_sequences=True)(lstm0)
dense = TimeDistributed(Dense(nb_labels))(lstm1)
output_layer = Activation("sigmoid")(dense)

model = CTCModel([input_layer], [output_layer])
model.compile(optimizer=Adam(lr=1e-4))
model.summary()

model.save_model("./")

loaded = CTCModel(None, None)
loaded.load_model("./", optimizer=Adam(lr=1e-4))
loaded.summary()

Keras 模型的标准输入 x 和 y 在这里定义不同,其中 x 是观察值,y 是标签。在 CTCModel 中,您必须提供为 x:

  • 输入观察
  • 标签_
  • 输入序列的长度
  • 标签序列的长度

在这里,y 没有以标准方式使用,必须为 Keras 方法定义(作为标签或长度等于标签长度的空结构)。让x_trainy_trainx_train_leny_train_len这些术语。拟合、评估和预测方法可以使用如下:

model.fit(x=[x_train,y_train,x_train_len,y_train_len], y=zeros(nb_train), batch_size=64)
print(model.evaluate(x=[x_test,y_test,x_test_len,y_test_len], batch_size=64))
model.predict([x_test, x_test_len])

例子

文件 example.py 是使用 CTCModel 的示例。数据集由数字序列组成。这是来自 MNIST 数据集 [Lecun 98] 的图像,它们已被连接以获得观察序列和标签序列。
该示例展示了如何使用标准拟合、预测和评估方法。根据观察和标签序列,我们为每个数据集创建两个列表,其中包含每个序列的长度,一个用于观察,一个用于标签。然后填充数据以便为 Keras 方法提供固定大小的输入。

使用 CTCModel 的拟合方法定义和训练具有双向层的标准递归神经网络。然后执行评估方法来计算测试集上的损失、标签错误率和序列错误率。因此评估方法的输出是一个包含每个度量值的列表。最后,应用预测方法来获得对测试集的预测。打印第一个预测序列,以便将预测标签与基本事实进行比较。

在引擎盖下

CTCModel 的工作原理是向循环网络添加三个额外的输出层,用于计算 CTC 损失、解码和使用用于序列分析的标准度量(序列错误率和标签错误率)进行评估。通过使用标准的 Keras 方法,例如fitpredictevaluate ,每一个都可以盲目地应用。请注意,基于生成器的方法已经定义并且可以以标准方式使用,前提是生成器返回的输入 x 和标签 y 具有上述特定结构。

除了三个特定的层外,CTCModel 作为标准的 Keras 模型工作,大多数被覆盖的方法只是选择正确的输出层并调用相关的 Keras 模型方法。还有其他方法可以保存或加载模型参数和其他方法以获取特定计算,例如使用 get_loss 的损失或使用get_probas输入概率(以及相关的on_batch生成器方法)。

学分和许可证

CTCModel 由 Cyprien RUFFINO 和 Yann SOULLARD 在诺曼底大学 LITIS 实验室 ( http://www.litislab.fr ) 在 Thierry PAQUET 的监督下开发。

CTCModel 受 MIT 许可条款约束。

CTCModel 托管在 PyPI ( https://pypi.org/project/keras-ctcmodel/ )

如果您将 CTCModel 用于研究目的,请考虑在您的论文中添加以下引文:

@misc{ctcmodel, author = {Soullard, Yann and Ruffino, Cyprien and Paquet, Thierry},
title = {{CTCModel: Connectionist Temporal Classification in Keras}},
year = {2018},
ee = {https://arxiv.org/abs/1901.07957},
archivePrefix = {arXiv} }

参考

F. Chollet 等人。Keras:Python 深度学习,https://github.com/keras-team/keras,2015
。A. Graves、S. Fernández、F. Gomez、J. Schmidhuber。连接主义时间分类:用循环神经网络标记未分段的序列数据。在第 23 届机器学习国际会议论文集上(第 369-376 页)。ACM,2006 年 6 月
。LeCun, Y. (1998)。MNIST 手写数字数据库。http://yann.lecun.com/exdb/mnist/

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

keras_ctcmodel-1.0.0rc3.tar.gz (19.3 kB 查看哈希

已上传 source

内置分布

keras_ctcmodel-1.0.0rc3-py3-none-any.whl (17.5 kB 查看哈希

已上传 py3