Как L2 нормализовать массив с помощью Swift - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь нормализовать ввод моей модели 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 и использую в качестве входных данных для моего предиктора

Примечание: я также пытался преобразовать нормализаториз sklearn с использованием инструментов coreml, но я получил ошибки, как показано здесь:

1 Ответ

0 голосов
/ 10 февраля 2019

vDSP_normalizeD использует среднее значение и стандартное отклонение.Это не то же самое, что L2.

Нормализация L2 сначала вычисляет L2-норму вектора, которая совпадает с sqrt(v[0]*v[0] + v[1]*v[1] + ... + v[n]*v[n]), а затем делит каждый элемент вектора на это число.

...