Возможно ли запустить ядро ​​машины опорных векторов на устройстве с <= 1 МБ ОЗУ и <= 10 МБ ПЗУ? - PullRequest
1 голос
/ 01 июня 2019

Некоторые предварительные испытания показывают, что проект, над которым я работаю, потенциально может выиграть от использования машины поддержки векторов для решения сложной проблемы.Меня беспокоит то, что будут серьезные ограничения памяти.Прототипирование и тестирование выполняются на python с помощью scikit-learn.Окончательная версия будет написана на заказ на языке C. Модель будет предварительно обучена, и только конечная функция будет сохранена в конечном продукте.Было бы <= 10 обучающих функций и <= 5000 обучающих данных.Я читал разные вещи, касающиеся памяти SVM, и я знаю, что кеш-память по умолчанию sklearn составляет 200 МБ.(Гораздо больше, чем у меня есть в наличии) Это возможно?Я знаю, что есть несколько разных типов ядра SVM, и что ядро ​​также может быть написано на заказ.С какими типами ядер это может работать, если таковые имеются? </p>

1 Ответ

2 голосов
/ 01 июня 2019

Если вы стеснены в пространстве, вам, вероятно, захочется пропустить scikit и просто применить математику самостоятельно. Таким образом, вы можете циклически перебирать данные в структурах по вашему выбору. Требования к памяти зависят от класса SVM, который вы используете; двухклассный линейный SVM может быть выполнен за один проход данных, учитывая только одно наблюдение за раз, когда вы накапливаете сумму продуктов, поэтому ваша командная логика будет занимать гораздо больше места, чем требования к данным.

Если вам нужно сохранить весь набор данных в памяти для нескольких проходов, это «всего лишь» 5000 * 10 * 8 байт для чисел с плавающей запятой или 400 КБ вашего 1 МБ, что может быть достаточным пространством для выполнения ваши манипуляции. Также рассмотрите медленный процесс обучения, перечитывая данные на каждом проходе, поскольку это уменьшает 400 КБ до тривиальности за счет времени настенных часов.

Все это находится под вашим контролем, если вы посмотрите пригодную для использования реализацию SVM и измените части ввода / вывода по мере необходимости.

Это помогает?

...