Вопрос

В настоящее время я создаю библиотеку нейронных сетей.Для простоты я построил его в виде графа объектов.Мне интересно, сможет ли кто-нибудь количественно оценить преимущества в производительности от подхода, основанного на массивах.То, что у меня есть сейчас, очень хорошо работает для построения сетей практически произвольной сложности.Поддерживаются обычные (обратные) сети, а также рекуррентные сети.Я подумываю о том, чтобы обученные сети «скомпилировались» в какую-то «более простую» форму, например, в массивы.

Я просто хотел узнать, есть ли у кого-нибудь практический совет или опыт создания нейронных сетей, которые можно будет успешно использовать в производстве.Есть ли какая-либо польза от того, что конечный продукт будет основан на массиве, а не на графе объектов?

P.S. Объем памяти менее важен, чем скорость.

Это было полезно?

Решение

Все зависит от того, какой язык вы используете - я предполагаю, что вы используете производную Си.

В моих реализациях я нашел подход с использованием графов объектов намного лучше. Есть некоторый компромисс в скорости, но простота обслуживания перевешивает вызовы поиска объекта. Все зависит от того, ищете ли вы скорость тренировки или скорость решения ... Я полагаю, вы больше всего беспокоитесь о скорости тренировки?

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

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

Другие советы

Люди начали использовать методы GPGPU в AI, и ваша нейронная сеть в матричной форме могла бы использовать гораздо более быстрые операции с матрицами в вашей типичной видеокарте.

Как бы вы ни реализовывали это, вы никогда не должны забывать:

Просто убедитесь, что вы не используете его максимально, а не сверните.

http://xkcd.com/534/

Это было давно, но я вспоминаю, что скорость обычно является проблемой только во время обучения нейронной сети.

У меня нет личного опыта написания такой библиотеки, но я могу дать вам ссылку на некоторые популярные проекты с открытым исходным кодом, на которых вы, возможно, могли бы поучиться.(Лично я бы просто использовал одну из этих существующих библиотек.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top