За повечето задачи за задълбочено обучение можете да използвате предварително обучена мрежа и да я адаптирате към вашите собствени данни. За пример, показващ как да се използва трансферно обучение за преквалификация на конволюционна невронна мрежа за класифициране на нов набор от изображения, вижте Обучение на мрежа за дълбоко обучение за класифициране на нови изображения. Като алтернатива можете да създавате и обучавате мрежи от нулата, като използвате обекти layerGraph с функциите trainNetwork и trainingOptions.

обучение

Ако функцията trainingOptions не предоставя опциите за обучение, които са ви необходими за вашата задача, тогава можете да създадете персонализиран цикъл на обучение, като използвате автоматична диференциация. За да научите повече, вижте Определяне на мрежа за дълбоко обучение за персонализирани цикли на обучение.

Ако Deep Learning Toolbox ™ не предоставя слоевете, необходими за вашата задача (включително изходни слоеве, които определят функциите за загуба), тогава можете да създадете персонализиран слой. За да научите повече, вижте Дефиниране на персонализирани слоеве за дълбоко обучение. За функции за загуби, които не могат да бъдат посочени с помощта на изходен слой, можете да посочите загубата в персонализиран цикъл на обучение. За да научите повече, вижте Задаване на функции за загуба. За мрежи, които не могат да бъдат създадени с помощта на графики на слоеве, можете да дефинирате персонализирани мрежи като функция. За да научите повече, вижте Определяне на мрежата като функция на модела.

За повече информация за това кой метод на обучение да използвате за коя задача, вижте Модели за дълбоко обучение на обучение в MATLAB.

Определете мрежа за дълбоко обучение за персонализирани цикли на обучение

Определете мрежата като dlnetwork обект

За повечето задачи можете да контролирате подробностите за алгоритъма на обучение, като използвате функциите trainingOptions и trainNetwork. Ако функцията trainingOptions не предоставя опциите, необходими за вашата задача (например персонализиран график за скорост на обучение), тогава можете да дефинирате свой собствен цикъл на обучение с помощта на обект dlnetwork. Обектът dlnetwork ви позволява да обучавате мрежа, посочена като графика на слоя, използвайки автоматично диференциране.

За мрежи, посочени като графика на слоя, можете да създадете обект dlnetwork от графика на слоя, като използвате директно функцията dlnetwork. За списък на слоевете, поддържани от dlnetwork обекти, вижте раздела Поддържани слоеве на страницата dlnetwork.

За пример, показващ как да обучавате мрежа с персонализиран график за скорост на обучение, вижте Обучение на мрежа с използване на персонализирана цикъл на обучение.

Определете мрежата като функция на модела

За архитектури, които не могат да бъдат създадени с помощта на графики на слоеве (например сиамска мрежа, която изисква споделени тегла), можете да дефинирате модела като функция на формата [dlY1. dlYM] = модел (параметри, dlX1. dlXN), където параметрите съдържат мрежовите параметри, dlX1. dlXN съответстват на входните данни за входовете на N модела и dlY1. dlYM съответстват на изходите на М модела. За да обучите модел за задълбочено обучение, дефиниран като функция, използвайте персонализиран цикъл на обучение. За пример вижте Обучение на мрежа, използваща функция на модел.

Когато дефинирате модели на дълбоко обучение като функция, трябва ръчно да инициализирате тежестите на слоевете. За повече информация вижте Инициализиране на обучими параметри за функции на модела.

Ако дефинирате персонализирана мрежа като функция, тогава функцията на модела трябва да поддържа автоматично диференциране. Можете да използвате следните операции за дълбоко обучение. Изброените тук функции са само подмножество. За пълен списък с функции, които поддържат въвеждане на dlarray, вижте Списък на функциите с поддръжка на dlarray.

Операцията с едно горещо декодиране декодира вектори на вероятността, като изхода на мрежа за класификация, в етикети за класификация.

Входът A може да бъде dlarray. Ако A е форматирано, функцията игнорира формата на данните.

Посочете функции за загуба

Когато използвате персонализирани цикли за обучение, трябва да изчислите загубата във функцията за градиенти на модела. Използвайте стойността на загубата при изчисляване на градиенти за актуализиране на мрежовите тегла. За да изчислите загубата, можете да използвате следните функции:

Функция Описание
softmax Операцията за активиране на softmax прилага функцията softmax към измерението на канала на входните данни.
сигмоидна Операцията за активиране на сигмоида прилага сигмоидната функция към входните данни.
кроссентропия Операцията за кръстосана ентропия изчислява загубата на кръстосана ентропия между мрежови прогнози и целеви стойности за задачи за класификация с един етикет и много етикети.
mse Операцията за грешка на половината от средния квадрат изчислява половината от средната стойност на загубата на грешка между прогнозите на мрежата и целевите стойности за задачи за регресия.

Като алтернатива можете да използвате персонализирана функция за загуба, като създадете функция на формата загуба = myLoss (Y, T), където Y е мрежовите прогнози, T са целите и загубата е върнатата загуба.

За пример, показващ как да се обучи генеративна състезателна мрежа (GAN), която генерира изображения с помощта на персонализирана функция за загуба, вижте Обучение на генеративна състезателна мрежа (GAN).

Актуализирайте обучими параметри, като използвате автоматична диференциация

Когато обучавате модел за задълбочено обучение с персонализиран цикъл на обучение, софтуерът минимизира загубата по отношение на обучимите параметри. За да сведе до минимум загубата, софтуерът използва градиентите на загубата по отношение на обучимите параметри. За да изчислите тези градиенти с помощта на автоматична диференциация, трябва да дефинирате функция за градиенти на модел.

Определете функцията на градиенти на модела

За модели, посочени като обект dlnetwork, създайте функция на градиентите на формата = modelGradients (dlnet, dlX, T), където dlnet е мрежата, dlX съдържа входните предиктори, T съдържа целите и градиентите съдържа върнатите градиенти. По желание можете да предадете допълнителни аргументи на функцията градиенти (например, ако функцията за загуба изисква допълнителна информация) или да върнете допълнителни аргументи (например метрики за начертаване на хода на обучението).

За модели, посочени като функция, създайте функция на градиентите на формата = modelGradients (параметри, dlX, T), където параметрите съдържат обучимите параметри, dlX съдържа входните предиктори, T съдържа целите, а градиентите съдържат върнатите градиенти. По желание можете да предадете допълнителни аргументи на функцията градиенти (например, ако функцията за загуба изисква допълнителна информация) или да върнете допълнителни аргументи (например метрики за начертаване на хода на обучението).

За да научите повече за дефинирането на функции за градиенти на модели за персонализирани цикли на обучение, вижте Дефиниране на функцията за градиенти на модели за персонализиран цикъл на обучение.

Актуализиране на обучими параметри

За да оцените градиентите на модела, използвайки автоматично диференциране, използвайте функцията dlfeval, която оценява функция с активирана автоматична диференциация. За първия вход на dlfeval, предайте функцията за градиенти на модела, посочена като манипулатор на функция, а за следващите входове, предайте необходимите променливи за функцията за градиенти на модела. За изходите на функцията dlfeval посочете същите изходи като функцията за градиенти на модела.

За да актуализирате научимите параметри, използвайки градиенти, можете да използвате следните функции: