Coreml:如何将数组 (1, 3, 80, 80, 19) 重塑为 (3, 6400, 19) 或 (1, 3, 6400, 19)

Posted

技术标签:

【中文标题】Coreml:如何将数组 (1, 3, 80, 80, 19) 重塑为 (3, 6400, 19) 或 (1, 3, 6400, 19)【英文标题】:Coreml: How to reshape an array (1, 3, 80, 80, 19) to (3, 6400, 19) or (1, 3, 6400, 19) 【发布时间】:2021-06-22 06:15:57 【问题描述】:

我有一个输入是 (1, 3, 80, 80, 19),我想将它重塑为 (3, 6400, 19) 或 (1, 3, 6400, 19)。我试过这样

 input_features = [
    ("714", datatypes.Array(1, 3, 80, 80, 19))]

builder.add_reshape(name='714_reshape', input_name='714', output_name='714_reshape', target_shape=(3, 6400, 19), mode=0)

但我收到此错误 Espresso 异常:“无效参数”:generic_reshape_kernel:用于重塑为 (19 6400 3 3 1) 的底部形状无效 (19 80 80 3 1)。

似乎 coreml 试图输出与我的输入相同的等级。有没有办法告诉 coreml 我想将轴 1 和 2 从 80x80 重塑为 6400?

【问题讨论】:

【参考方案1】:

试试add_reshape_static,它可以处理非 5 阶张量。旧的 reshape 层在这方面受到更多限制,有时会产生奇怪的行为。

【讨论】:

以上是关于Coreml:如何将数组 (1, 3, 80, 80, 19) 重塑为 (3, 6400, 19) 或 (1, 3, 6400, 19)的主要内容,如果未能解决你的问题,请参考以下文章

使用 CoreML 预测模式的结果 [关闭]

如何将 Turi Create 创建的 CoreML 模型转换为 Keras?

如何将 CoreML 模型转换为 TensorFlow 模型?

如何将 CoreML 模型添加到 Swift 包中?

使用 MLMultiArray 作为 CoreML 模型的输出

如何在 Keras 中生成 class_labels.txt 以在 CoreML 模型中使用?