Бакшиш

определете

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

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

За да дефинирате персонализиран изходен слой за класификация, можете да използвате шаблона, предоставен в този пример, който ви превежда през следните стъпки:

Дайте име на слоя - дайте име на слоя, за да може да се използва в MATLAB ® .

Деклариране на свойствата на слоя - Посочете свойствата на слоя.

Създаване на функция конструктор (по избор) - Посочете как да конструирате слоя и да инициализирате неговите свойства. Ако не посочите функция на конструктор, тогава софтуерът инициализира свойствата с '' при създаването.

Създайте функция за напред загуба - Посочете загубата между прогнозите и целите на обучението.

Създайте функция за обратна загуба (по избор) - Посочете производната на загубата по отношение на прогнозите. Ако не посочите функция за обратна загуба, функцията за загуба напред трябва да поддържа обекти на dlarray.

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

L = - 1 N ∑ n = 1 N ∑ i = 1 K w i T n i log (Y n i),

където N е броят на наблюденията, K е броят на класовете, а w е вектор на тегла за всеки клас.

Шаблон на изходния слой за класификация

Копирайте шаблона за изходен слой за класификация в нов файл в MATLAB. Този шаблон очертава структурата на класификационен изходен слой и включва функциите, които определят поведението на слоя.

Наименувайте слоя

Първо дайте име на слоя. В първия ред на файла с класа заменете съществуващото име myClassificationLayer сightedClassificationLayer .

След това преименувайте функцията конструктор myClassificationLayer (първата функция в раздела методи), така че да има същото име като слоя.

Запазете слоя

Запазете файла с класа на слоя в нов файл с име weighttedClassificationLayer.m. Името на файла трябва да съвпада с името на слоя. За да използвате слоя, трябва да запишете файла в текущата папка или в папка на пътя MATLAB.

Декларирайте свойствата на слоя

Декларирайте свойствата на слоя в раздела за свойства.

По подразбиране потребителските изходни слоеве имат следните свойства:

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

Описание - Едноредово описание на слоя, посочено като вектор на символи или скалар на низове. Това описание се появява, когато слоят се показва в масив от слоеве. Ако не посочите описание на слой, тогава софтуерът показва "Класификационен изход" или "Регресионен изход" .

Тип - Тип на слоя, посочен като вектор на символ или скалар на низ. Стойността на Type се появява, когато слоят се показва в масив от слоеве. Ако не посочите тип слой, тогава софтуерът показва името на класа на слоя.

Персонализираните класификационни слоеве също имат следното свойство:

Класове - Класове на изходния слой, посочени като категоричен вектор, масив от низове, масив от клетки със символни вектори или „автоматично“. Ако Класовете са „автоматични“, тогава софтуерът автоматично задава класовете по време на обучение. Ако посочите масива от низове или масива от клетки на символни вектори str, тогава софтуерът задава класовете на изходния слой на категорични (str, str). Стойността по подразбиране е „автоматично“ .

Персонализираните регресионни слоеве също имат следното свойство:

ResponseNames - Имена на отговорите, посочени масив от клетки с вектори на символи или масив от низове. По време на обучението софтуерът автоматично задава имената на отговорите според данните за обучението. По подразбиране е <> .

Ако слоят няма други свойства, тогава можете да пропуснете раздела за свойства.

В този пример слоят изисква допълнително свойство за запазване на тежестите на класа. Посочете свойството ClassWeights в раздела за свойства.

Създаване на функция конструктор

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

Посочете входния аргумент classWeights, който да присвоите на свойството ClassWeights. Също така посочете незадължително име на входен аргумент, което да присвоите на свойството Name при създаването. Добавете коментар в горната част на функцията, който обяснява синтаксисите на функцията.

Инициализирайте свойствата на слоя

Заменете коментара% Layer конструктор функция отива тук с код, който инициализира свойствата на слоя.

Дайте на слоя едноредово описание, като зададете свойството Description на слоя. Задайте свойството Name на незадължителното име на входния аргумент .

Създайте функция за напред загуба

Създайте функция с име forwardLoss, която връща претеглената загуба на кръстосана ентропия между прогнозите, направени от мрежата, и целите на обучението. Синтаксисът за forwardLoss е loss = forwardLoss (слой, Y, T), където Y е резултатът от предишния слой, а T представлява целите на обучението.

За класификационните проблеми размерите на T зависят от вида на проблема.

Класификация Задание Размер на входа Размер на наблюдение
Класификация на 2-D изображения1-по-1-по-K-по-N, където K е броят на класовете, а N е броят на наблюденията.4
Класификация на триизмерните изображения1-по-1-по-1-по-K-по-N, където K е броят на класовете, а N е броят на наблюденията.5
Класификация по последователност към етикет K-by-N, където K е броят на класовете, а N е броят на наблюденията.2
Класификация по последователност към последователност K-by-N-by- S, където K е броят на класовете, N е броят на наблюденията и S е дължината на последователността.2

Размерът на Y зависи от изхода на предишния слой. За да сте сигурни, че Y е със същия размер като T, трябва да включите слой, който извежда правилния размер преди изходния слой. Например, за да сте сигурни, че Y е 4-D масив от прогнозни резултати за K класове, можете да включите напълно свързан слой с размер K, последван от слой softmax преди изходния слой.

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

L = - 1 N ∑ n = 1 N ∑ i = 1 K w i T n i log (Y n i),

където N е броят на наблюденията, K е броят на класовете, а w е вектор на тегла за всеки клас.

Входовете Y и T съответстват съответно на Y и T в уравнението. Изходната загуба съответства на L. Добавете коментар в горната част на функцията, който обяснява синтаксисите на функцията.

Тъй като функцията forwardLoss използва само функции, които поддържат dlarray обекти, дефинирането на функцията backwardLoss не е задължително. За списък с функции, които поддържат dlarray обекти, вижте Списък на функциите с поддръжка на dlarray.

Завършен слой

Вижте завършения файл с клас на изходен слой за класификация.

GPU съвместимост

Ако функциите за пренасочване на слоя напълно поддържат обекти на dlarray, тогава слоят е съвместим с GPU. В противен случай, за да бъдат съвместими с GPU, функциите на слоя трябва да поддържат входове и връщани изходи от тип gpuArray (Parallel Computing Toolbox) .

Много вградени функции на MATLAB поддържат gpuArray (Паралелно изчисляване на инструментариум) и входни аргументи на dlarray. За списък с функции, които поддържат dlarray обекти, вижте Списък на функциите с поддръжка на dlarray. За списък с функции, които се изпълняват на графичен процесор, вижте Изпълнение на MATLAB функции на графичен процесор (кутия с инструменти за паралелно изчисление). За да използвате GPU за задълбочено обучение, трябва също така да имате активиран CUDA ® NVIDIA ® GPU с изчислителна способност 3.0 или по-висока. За повече информация относно работата с графични процесори в MATLAB вижте GPU Computing в MATLAB (Parallel Computing Toolbox) .

Функциите MATLAB, използвани в forwardLoss вightedClassificationLayer, всички поддържат dlarray обекти, така че слоят е съвместим с GPU.

Проверете валидността на изходния слой

Проверете валидността на изходния слой на персонализираната класификация weighttedClassificationLayer .

Дефинирайте персонализиран претеглен слой на класификация. За да създадете този слой, запишете файлаightedClassificationLayer.m в текущата папка.

Създайте екземпляр на слоя. Задайте тежестите на класовете като вектор с три елемента, съответстващи на три класа.

Проверете дали слоят е валиден с помощта на checkLayer. Задайте валидния размер на входа на типичния размер на единичен вход за наблюдение на слоя. Слоят очаква вход от масив 1 по 1 по K-by-N, където K е броят на класовете, а N е броят на наблюденията в мини-партидата.

Резюмето на теста отчита броя на преминатите, неуспешни, непълни и пропуснати тестове.

Вижте също

Свързани теми

  • Определете персонализирани слоеве за дълбоко обучение
  • Определете изходния слой на персонализираната регресия
  • Определете персонализиран слой за дълбоко обучение с параметри, които могат да се научат
  • Определете персонализиран слой за дълбоко обучение с множество входове
  • Определете вложен слой за дълбоко обучение
  • Посочете Функция за обратен слой по избор
  • Посочете функция за обратна загуба на изходния слой
  • Проверете валидността на слоя
  • Списък на дълбоките слоеве за обучение
  • Съвети и трикове за дълбоко обучение

Отворете пример

Модифицирана версия на този пример съществува във вашата система. Искате ли вместо това да отворите тази версия?