Структура нейронной сети [закрыто]
-
19-08-2019 - |
Вопрос
В настоящее время я создаю библиотеку нейронных сетей.Для простоты я построил его в виде графа объектов.Мне интересно, сможет ли кто-нибудь количественно оценить преимущества в производительности от подхода, основанного на массивах.То, что у меня есть сейчас, очень хорошо работает для построения сетей практически произвольной сложности.Поддерживаются обычные (обратные) сети, а также рекуррентные сети.Я подумываю о том, чтобы обученные сети «скомпилировались» в какую-то «более простую» форму, например, в массивы.
Я просто хотел узнать, есть ли у кого-нибудь практический совет или опыт создания нейронных сетей, которые можно будет успешно использовать в производстве.Есть ли какая-либо польза от того, что конечный продукт будет основан на массиве, а не на графе объектов?
P.S. Объем памяти менее важен, чем скорость.
Решение
Все зависит от того, какой язык вы используете - я предполагаю, что вы используете производную Си.
В моих реализациях я нашел подход с использованием графов объектов намного лучше. Есть некоторый компромисс в скорости, но простота обслуживания перевешивает вызовы поиска объекта. Все зависит от того, ищете ли вы скорость тренировки или скорость решения ... Я полагаю, вы больше всего беспокоитесь о скорости тренировки?
В случае необходимости всегда можно выполнить микрооптимизацию некоторых проблем с вызовами объекта.
Учитывая ваши второстепенные мотивы создания сетей в подсетях, я думаю, что еще более важно быть объектно-ориентированным - это значительно облегчает выделение фрагментов работы.
Другие советы
Люди начали использовать методы GPGPU в AI, и ваша нейронная сеть в матричной форме могла бы использовать гораздо более быстрые операции с матрицами в вашей типичной видеокарте.
Это было давно, но я вспоминаю, что скорость обычно является проблемой только во время обучения нейронной сети.
У меня нет личного опыта написания такой библиотеки, но я могу дать вам ссылку на некоторые популярные проекты с открытым исходным кодом, на которых вы, возможно, могли бы поучиться.(Лично я бы просто использовал одну из этих существующих библиотек.)