我正在尝试像下面那样标准化我的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转换规范化器,但是出现了如下所示的错误:
答案 0 :(得分:2)
vDSP_normalizeD
使用平均值和标准偏差。那和L2不同。
L2归一化首先计算向量的L2范数,它与sqrt(v[0]*v[0] + v[1]*v[1] + ... + v[n]*v[n])
相同,然后将向量的每个元素除以该数字。