【问题标题】:coremltools convert output to floatcoremltools 将输出转换为浮点数
【发布时间】:2020-04-29 02:00:05
【问题描述】:

嘿,我有格式为 .pth 的模型,我决定通过 .pth -> .onnx -> .mlmodel 将此模型转换为苹果的 .mlmodel

我使用 coremltools 将输入转换为图像,但我需要将输出转换为 Double。现在我有类似 MultiArray (Float32) MultiArray 的形状 (1, 1, 1, 1, 1)。第一维和第二维分别对应序列和批量大小

我尝试做这样的事情

import coremltools
from coremltools.proto import FeatureTypes_pb2 as ft


spec = coremltools.utils.load_spec("ios.mlmodel")
output = spec.description.output[0]
output.type = ft.DoubleFeatureType
model.save('testowymodel2.mlmodel')

【问题讨论】:

    标签: coreml coremltools


    【解决方案1】:

    定义这个函数:

    import coremltools.proto.FeatureTypes_pb2 as ft
    
    def update_multiarray_to_double(feature):
        if feature.type.HasField("multiArrayType"):
            feature.type.multiArrayType.dataType = ft.ArrayFeatureType.DOUBLE
    

    然后这样称呼它:

    for feature in spec.description.output:
        update_multiarray_to_double(feature)
    
    coremltools.utils.save_spec(spec, "woot.mlmodel")
    

    【讨论】:

    • Okej,我不知道如何解释这一点,但在 python 中我只有一个输出,如print(r'Score: %.2f' % preds.item()),我尝试在核心 ml 上得到相同的东西,我不需要数组只是一个浮点数/双倍
    • 在这种情况下,您将获得一个 MLMultiArray,其中只有一个项目。
    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    相关资源
    最近更新 更多