在 CoreML 中为循环网络定义可选输入
Posted
技术标签:
【中文标题】在 CoreML 中为循环网络定义可选输入【英文标题】:Defining optional inputs in CoreML for recurrent network 【发布时间】:2018-07-03 06:32:08 【问题描述】:我最近在 CoreML 文档网站上偶然发现了一篇文章,该文章讨论了用于预测文本的循环模型的实现。我正在尝试复制这个,或者至少是类似的东西,并且对于作者如何能够将模型中的“stateIn”输入定义为可选的已经碰壁了。有没有人有任何信息可以为我指明正确的方向?我正在使用 keras 构建网络,并计划在训练后转换为 CoreML。
本文中使用的过程将完全适用于我的模型。输出最后一层的状态并将其传递回模型中以用于序列中的下一个项目似乎是一种很好的方法,但是我不清楚如何使用 CoreML 实现这一点。
任何信息或帮助将不胜感激!
提前感谢
文章链接: https://developer.apple.com/documentation/coreml/core_ml_api/making_predictions_with_a_sequence_of_inputs
【问题讨论】:
【参考方案1】:coremltools Keras 转换器似乎不允许您指定哪些输入是可选的。
但是,proto files that contain the MLModel definition 说 Model 对象有一个 ModelDescription,它有一个用于输入的 FeatureDescription 对象数组,它有一个 FeatureType 对象,它有一个 isOptional 布尔值。
所以这样的事情应该可以工作:
mlmodel = keras.convert(...)
spec = mlmodel._spec
spec.description.input[1].type.isOptional = True
mlmodel.save(...)
我实际上并没有尝试过,所以确切的语法可能会有所不同,但这是一般的想法。
【讨论】:
完美运行!非常感谢!刚跑:model._spec.description.input[1].type.isOptional = True 也只是想说我熟悉你的一些工作,我发现你过去的 Machine Think 帖子很有帮助!以上是关于在 CoreML 中为循环网络定义可选输入的主要内容,如果未能解决你的问题,请参考以下文章
Keras 卷积神经网络转换为 CoreML 模型的输入是多数组而不是图像?
如何在 Keras 中为循环神经网络 (RNN) 使用嵌入层