Моя цель — обучить нейронную сеть классифицировать объекты по изображениям с моей веб-камеры. Я использую перенос обучения с Alexnet, и у меня есть размеченный набор обучающих данных с 25 000 изображений.

Мой обучающий скрипт работает отлично, но ход итераций во время обучения очень медленный. У меня установлен Parallel Computing Toolbox, и обучение выполняется на одном графическом процессоре. Но если посмотреть на диспетчер задач, Matlab использует только 13% ЦП и всего 2% ГП. Почему Matlab не использует больше ресурсов для ускорения процесса обучения?

Программное обеспечение — Windows 10, и у меня установлена ​​​​новейшая версия Matlab 64bit.

ОТВЕЧАТЬ

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech , ME, M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Вы наверняка не храните в памяти сразу все 25000 изображений. Вместо этого вы, вероятно, используете и используете их повторно. снова и снова. Итак, что вам, вероятно, следует делать, так это смотреть на скорость доступа к диску. Чтение изображения занимает относительно много времени, но на самом деле потребляется не процессорное время. Процессор тратит большую часть своего времени только на ожидание данных. Таким образом, процессор не отображается как занятый. Это, конечно, только мой прогноз, о чем свидетельствует статистика, которую вы сообщаете.

Вы можете подтвердить этот факт? Конечно! Вам нужно узнать о тополе профиля, который предоставляет MATLAB. Это позволяет вам включить профилировщик, а затем запустить свой код. Затем проверьте, где MATLAB проводил больше всего времени. Это важно для ЛЮБОГО кода. Мой прогноз таков: когда вы сделаете профиль своего кода, он покажет, что больше всего времени занимает одна строка кода — вероятно, простой вызов imread.

Теперь, почему я понял, что проблема НЕ в однопоточности, а не в многопоточности?

Например, мой компьютер имеет 4 ядра. Я могу легко заставить MATLAB обращаться ко всем 4 ядрам в операции, потому что я знаю, какие операции MATLAB будет иметь тенденцию к автоматической многопоточности. Точно так же я могу так же легко заставить MATLAB запускаться, но только в ОДНОМ потоке, так как, опять же, я знаю, что некоторые операции НЕ распараллеливаются автоматически.

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

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ

https://www.matlabsolutions.com/resources/why-does-not-matlab-use-the-full-capacity-of-my-computer-while-training-a-neural-network-.php