在 CoreML 中为循环网络定义可选输入
Defining optional inputs in CoreML for recurrent network
我最近在 CoreML 文档站点上偶然发现了一篇文章,其中讨论了用于预测文本的循环模型的实现。我试图复制这个,或者至少是类似的东西,并且在作者如何能够将模型中的 "stateIn" 输入定义为可选输入方面遇到了困难。有没有人有任何信息可以指出我正确的方向?我正在使用 keras 构建网络,并计划在训练后转换为 CoreML。
本文中使用的过程完全适用于我的模型。输出最后一层的状态并将其传递回序列中下一项的模型似乎是一种很好的方法,但是我不清楚如何使用 CoreML 实现这一点。
任何信息或帮助将不胜感激!
提前致谢
coremltools Keras 转换器似乎不允许您指定哪些输入是可选的。
但是,proto files that contain the MLModel definition 说模型对象有一个 ModelDescription,它有一个用于输入的 FeatureDescription 对象数组,它有一个 FeatureType 对象,它有一个 isOptional 布尔值。
所以像这样的东西应该可以工作:
mlmodel = keras.convert(...)
spec = mlmodel._spec
spec.description.input[1].type.isOptional = True
mlmodel.save(...)
我并没有实际尝试过,所以确切的语法可能有所不同,但这是一般的想法。
我最近在 CoreML 文档站点上偶然发现了一篇文章,其中讨论了用于预测文本的循环模型的实现。我试图复制这个,或者至少是类似的东西,并且在作者如何能够将模型中的 "stateIn" 输入定义为可选输入方面遇到了困难。有没有人有任何信息可以指出我正确的方向?我正在使用 keras 构建网络,并计划在训练后转换为 CoreML。
本文中使用的过程完全适用于我的模型。输出最后一层的状态并将其传递回序列中下一项的模型似乎是一种很好的方法,但是我不清楚如何使用 CoreML 实现这一点。
任何信息或帮助将不胜感激!
提前致谢
coremltools Keras 转换器似乎不允许您指定哪些输入是可选的。
但是,proto files that contain the MLModel definition 说模型对象有一个 ModelDescription,它有一个用于输入的 FeatureDescription 对象数组,它有一个 FeatureType 对象,它有一个 isOptional 布尔值。
所以像这样的东西应该可以工作:
mlmodel = keras.convert(...)
spec = mlmodel._spec
spec.description.input[1].type.isOptional = True
mlmodel.save(...)
我并没有实际尝试过,所以确切的语法可能有所不同,但这是一般的想法。