Hi ,

У меня есть классификатор k-ближайших соседей, который я обучил с помощью fitcknn. Мне интересно, при прогнозировании меток на модели с использованием predicit она работает параллельно?

Я протестировал использование предсказания в цикле for и цикле parfor. Простой цикл for работает немного быстрее, что заставляет меня думать, что есть некоторая оптимизация и встроенная параллелизация, которыми пользуется функция прогнозирования. Однако документация не упоминает об этом, и я думал, что MATLAB всегда работает в одном потоке, если специально не используется параллельный пул? В обоих случаях я предоставляю функции прогнозирования вектор из 1000 строк тестовых данных за раз. Хотя мой тестовый набор данных состоит из миллиона строк, я делаю это, чтобы видеть прогресс, пока программа делает прогнозы.

Итак, в основном:

  1. Использует ли функция предсказания параллелизацию в моделях k-nn?
  2. Любые другие советы по увеличению времени тестирования при использовании большой модели k-nn?

ПРИМЕЧАНИЕ. 

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech ,ME,M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Возможно, вы ошибаетесь. Большинство инструментов высокого уровня в MATLAB не используют параллельную обработку напрямую, преднамеренно, разделяя задачу. Вычисления нижнего уровня делают это, где вы видите выигрыш. И вы можете проверить, когда это происходит. Довольно легко создать ситуацию, когда MATLAB будет использовать всю доступную мощность процессора. Например, просто сформируйте матрицу умножения между двумя очень большими матрицами. MATLAB передает эту операцию BLAS, подпрограммам более низкого уровня, которые могут разумно использовать несколько ядер для более эффективного выполнения работы. Поэтому, если вы смотрите на монитор процессора, когда это происходит, ваш компьютер внезапно становится очень загруженным. Но на самом деле это был не MATLAB, который сделал параллельное разделение, это было сделано более глубоко под капотом.

Другой случай, когда я часто вижу, что это происходит, - это большие вычисления, когда мне может понадобиться выполнить операцию powermod, когда я выбираю вычисление mod(b^n,p) для огромных значений n и для многих миллионов чисел в массиве. вектор р. (Знаете ли вы, что существует примерно 51 миллион простых чисел, меньших 1e9? Я знаю это.) Мой системный вентилятор сразу же включается, когда я выполняю эти вычисления, при этом все процессоры работают на полную мощность. Но опять же, не высокоуровневый код MATLAB решает, когда распараллеливать код, а низкоуровневые подпрограммы, которые видят процесс, который можно эффективно разделить, когда это имеет смысл.

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ