Вычислить количество флопов для данной нейронной сети? - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть нейронная сеть (ALEXnet или VGG16), написанная с помощью Keras для классификации изображений, и я хотел бы рассчитать количество операций с плавающей запятой для сети. Размер изображений в наборе данных может варьироваться. Может ли обобщенный код быть написан на python, который может автоматически вычислять провалы? или есть какой-нибудь библиотекарь в наличии.

Я работаю с spyderAnaconda, и определенная сеть является последовательной моделью.

Спасибо.

1 Ответ

0 голосов
/ 25 апреля 2019

Нет такого кода, потому что количество FLOP зависит от аппаратных и программных реализаций. Конечно, вы можете получить типичное количество, расширяя послойные операции для каждого параметра и веса. и делать разумные предположения реализации для каждой функции активации.

Входные размеры будут пропорционально влиять на вычисления для первого слоя.

Я не уверен, что вы собираетесь использовать для "обобщенного кода на Python"; Вы планируете использовать форму модели Keras в качестве входных данных? Это возможно, но вам нужно написать модули, которые будут извлекать характеристики ядра и логику соединения из представления Keras.

Количество операций будет варьироваться от одной реализации к другой. Аппаратные архитектуры теперь напрямую поддерживают параллельные операции и ярлыки для разреженных матриц. Некоторые из них имеют дополнительную функциональность для настройки представлений с плавающей точкой для большей скорости обучения. Программные платформы включают контроль и анализ потока данных для оптимизации функционального потока. Любое из них изменит вычисление FLOP.

...