如何使用 Swift 对数组进行 L2 规范化
How to L2 normalize an array with Swift
我正在尝试规范化我的 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 转换标准化器,但出现如下错误:
vDSP_normalizeD
使用均值和标准差。那和L2不一样。
L2 归一化首先计算向量的 L2 范数,这与 sqrt(v[0]*v[0] + v[1]*v[1] + ... + v[n]*v[n])
相同,然后将向量的每个元素除以该数。
我正在尝试规范化我的 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 转换标准化器,但出现如下错误:
vDSP_normalizeD
使用均值和标准差。那和L2不一样。
L2 归一化首先计算向量的 L2 范数,这与 sqrt(v[0]*v[0] + v[1]*v[1] + ... + v[n]*v[n])
相同,然后将向量的每个元素除以该数。