Уменьшает ли представление данных в битах время обучения моделей машинного обучения? - PullRequest
2 голосов
/ 18 апреля 2020

Во многих записных книжках на kaggle я вижу методы, используемые для уменьшения использования памяти данными, например, преобразование столбцов int64 в int32. Почему мы хотим уменьшить использование памяти, если данные могут уместиться в памяти? Делает ли это, что модели машинного обучения обучаются быстрее на данных?

1 Ответ

5 голосов
/ 18 апреля 2020

Да. Во многих моделях будет множество вычислений с использованием векторов признаков.
Например, в MLP мы бы сделали взвешенную сумму представлений признаков для получения вывода в каждом нейроне.

Вычисления выполняются намного быстрее, если компоненты векторного компонента являются 32-битными по сравнению с 64-битными представлениями.

Позвольте мне проиллюстрировать простым примером:

import timeit

mult64 = """
import numpy as np
arr64 = np.int64([3,4,5])
arr64*arr64
"""

mult32 = """
import numpy as np
arr32 = np.int32([3,4,5])
arr32*arr32
"""

mult64_time = timeit.timeit(mult64, number=100)/100
mult32_time = timeit.timeit(mult32, number=100)/100

print(mult64_time)
print(mult32_time)

Дает мне результат, как показано ниже. Как видно, время, затрачиваемое на простое умножение на ЦП, намного выше для int32, чем для int64. Как правило, это преобразование полезно для экономии времени обучения / прогнозирования.

0.00086965738
1.7849500000000074e-06
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...