【问题标题】:How to L2 normalize an array with Swift如何使用 Swift 对数组进行 L2 标准化
【发布时间】:2019-07-03 15:41:58
【问题描述】:

我正在尝试对我的 CoreML 模型的输入进行标准化,如下所示,它对数组做了一些事情,但它与 SKLearn 所做的完全不同(我在这些环境中给出相同的输入并观察输出)。所以显然我做错了什么。

我的模型是使用 Keras 和 SKlearn 进行训练的,它必须执行与我使用 SKLearn Normalizer 相同的归一化,这是默认的 L2 归一化器。我在下面做的显然不等于sklearn,有什么想法吗?

    vDSP_normalizeD(vec, 1, &normalizedVec, 1, &mean, &std, vDSP_Length(count))

    let (normalizedXVec, _, _) = normalize(vec: doubleArray)

然后在这里我将 normalizedXVec 转换为 MLMultiArray 并用作我的预测器的输入

注意:我还尝试使用 coreml 工具从 sklearn 转换规范化器,但出现错误,如下所示:

【问题讨论】:

    标签: ios swift scikit-learn swift4 coreml


    【解决方案1】:

    vDSP_normalizeD 使用均值和标准差。这和 L2 不一样。

    L2 归一化首先计算向量的 L2 范数,与 sqrt(v[0]*v[0] + v[1]*v[1] + ... + v[n]*v[n]) 相同,然后将向量的每个元素除以该数字。

    【讨论】:

      猜你喜欢
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      相关资源
      最近更新 更多