Definiálja az egyedi súlyozott osztályozási réteget - MATLAB; Simulink

Tipp

osztályozási

Kereszt entrópia veszteséggel rendelkező osztályozási kimeneti réteg felépítéséhez k egymást kizáró osztályokhoz használja az osztályozási rétegt. Ha más veszteségfüggvényt szeretne használni osztályozási problémáihoz, akkor meghatározhat egy egyedi besorolási kimeneti réteget, ha ezt a példát használja útmutatóként.

Ez a példa bemutatja, hogyan lehet meghatározni és létrehozni egy egyedi súlyozott osztályozási kimeneti réteget súlyozott kereszt entrópia veszteséggel. Az osztályok kiegyensúlyozatlan eloszlásával osztályozási problémákhoz használjon súlyozott osztályozási réteget. A súlyozott besorolási réteg hálózati használatát bemutató példához lásd: Beszédparancs-felismerés a mély tanulás segítségével.

Egyéni besorolási kimeneti réteg definiálásához használhatja az ebben a példában megadott sablont, amely végigvezet a következő lépéseken:

Nevezze meg a réteget - Adjon nevet a rétegnek, hogy az használható legyen a MATLAB ® alkalmazásban .

A réteg tulajdonságainak deklarálása - Adja meg a réteg tulajdonságait.

Konstruktorfüggvény létrehozása (opcionális) - Adja meg a réteg felépítésének és tulajdonságainak inicializálásának módját. Ha nem ad meg konstruktorfüggvényt, akkor a szoftver inicializálja a tulajdonságokat a létrehozáskor.

Hozzon létre egy előrejelzési funkciót - Adja meg a veszteséget az előrejelzések és az edzés céljai között.

Hozzon létre visszamenőleges veszteségfüggvényt (opcionális) - Adja meg a veszteség deriváltját az előrejelzések szempontjából. Ha nem ad meg visszamenőleges veszteség funkciót, akkor az előre vesztés funkciónak támogatnia kell a dlarray objektumokat.

A súlyozott osztályozási réteg kiszámítja a súlyozott kereszt entrópia veszteséget az osztályozási problémákra. A súlyozott kereszt entrópia két folyamatos véletlen változó hibamértéke. Az Y jóslati pontszámok és a T edzéscélok esetében az Y és T közötti kereszt entrópia súlyozott veszteségét adja meg

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

ahol N a megfigyelések száma, K az osztályok száma és w az egyes osztályok súlyvektora.

Osztályozás kimeneti réteg sablon

Másolja az osztályozási kimeneti réteg sablonját egy új fájlba a MATLAB-ban. Ez a sablon felvázolja az osztályozási kimeneti réteg felépítését, és tartalmazza azokat a függvényeket, amelyek meghatározzák a réteg viselkedését.

Nevezze el a réteget

Először adjon nevet a rétegnek. Az osztályfájl első sorában cserélje le a meglévő myClassificationLayer nevet a weightedClassificationLayer névre .

Ezután nevezze át a myClassificationLayer konstruktor függvényt (a Metódus szakasz első függvénye) úgy, hogy ugyanaz legyen a neve, mint a fólia.

Mentse el a réteget

Mentsük el a réteg osztályfájlt egy új, weightedClassificationLayer.m nevű fájlba. A fájlnévnek meg kell egyeznie a réteg nevével. A réteg használatához el kell mentenie a fájlt az aktuális mappába vagy a MATLAB elérési út mappájába.

Nyújtsa be a réteg tulajdonságait

A tulajdonságok szakaszban deklarálja a réteg tulajdonságait.

Alapértelmezés szerint az egyéni kimeneti rétegek a következő tulajdonságokkal rendelkeznek:

Név - Réteg neve, karaktervektorként vagy karakterlánc skalárként megadva. Ha egy réteget felvesz egy rétegdiagramba, meg kell adnia egy nem üres egyedi rétegnevet. Ha egy soros hálózatot oktat a fóliával, és a Név értéke '', akkor a szoftver az edzés idején automatikusan nevet rendel a fóliához.

Leírás - A réteg egysoros leírása karaktervektorként vagy karakterlánc skalárként megadva. Ez a leírás akkor jelenik meg, amikor a réteg megjelenik egy réteg tömbben. Ha nem ad meg rétegleírást, akkor a szoftver megjeleníti a "Osztályozási kimenet" vagy a "Regressziós kimenet" .

Típus - A réteg típusa, karaktervektorként vagy karakterlánc skalárként megadva. A Type értéke akkor jelenik meg, amikor a réteg megjelenik egy Layer tömbben. Ha nem ad meg rétegtípust, akkor a szoftver megjeleníti a rétegosztály nevét.

Az egyéni besorolási rétegeknek a következő tulajdonságuk is van:

Osztályok - A kimeneti réteg osztályai, kategorikus vektorként, string tömbként, karaktervektorok cellatömbjeként vagy „auto” -ként megadva. Ha az Osztályok 'automatikus', akkor a szoftver automatikusan beállítja az osztályokat az edzés idejére. Ha megadja az str karaktervektorok vagy cellatömböket, akkor a szoftver kategorikusra állítja a kimeneti réteg osztályait (str, str). Az alapértelmezett érték 'auto' .

Az egyéni regressziós rétegeknek a következő tulajdonságuk is van:

ResponseNames - A válaszok nevei, megadva egy karaktervektor cellatömböt vagy egy string tömböt. Edzéskor a szoftver automatikusan beállítja a válaszneveket a képzési adatoknak megfelelően. Az alapértelmezett <> .

Ha a rétegnek nincsenek egyéb tulajdonságai, akkor kihagyhatja a tulajdonságok részt.

Ebben a példában a réteg további tulajdonságot igényel az osztály súlyainak mentéséhez. Adja meg a ClassWeights tulajdonságot a tulajdonságok részben.

Konstruktor funkció létrehozása

Hozza létre azt a függvényt, amely felépíti a réteget és inicializálja a réteg tulajdonságait. Adja meg a réteg létrehozásához szükséges változókat a konstruktor függvényének bemeneteként.

Adja meg a ClassWeights tulajdonsághoz rendelendő input argumentumot. Adjon meg egy opcionális bemeneti argumentum nevet is, amelyet a Név tulajdonsághoz kell hozzárendelni a létrehozáskor. Vegyen fel egy megjegyzést a függvény tetejére, amely elmagyarázza a függvény szintaxisait.

Inicializálja a réteg tulajdonságait

Cserélje ki a megjegyzést A% Layer konstruktor függvény itt olyan kóddal jelenik meg, amely inicializálja a réteg tulajdonságait.

Adjon egyrétegű leírást a rétegnek a réteg Leírás tulajdonságának beállításával. Állítsa a Név tulajdonságot az opcionális bemeneti argumentum névre .

Hozzon létre Forward Loss Function

Hozzon létre egy forwardLoss nevű függvényt, amely visszaadja a súlyozott kereszt entrópia veszteséget a hálózat által készített előrejelzések és a képzési célok között. A forwardLoss szintaxisa veszteség = forwardLoss (réteg, Y, T), ahol Y az előző réteg kimenete, T pedig a képzési célokat jelenti.

Osztályozási problémák esetén a T méretei a probléma típusától függenek.

Osztályozás TaskInput SizeObservation Dimension
2-D képosztályozás1-by-1-by-K-by-N, ahol K az osztályok száma és N a megfigyelések száma.4
3D-s képosztályozás1-by-1-by-1-by-K-by-N, ahol K az osztályok száma és N a megfigyelések száma.5.
Szekvencia-címke osztályozás K-by-N, ahol K az osztályok száma és N a megfigyelések száma.2
Szekvencia-szekvencia osztályozás K-by-N-by-S, ahol K az osztályok száma, N a megfigyelések száma és S a szekvencia hossza.2

Y mérete az előző réteg kimenetétől függ. Annak biztosítására, hogy Y azonos méretű legyen, mint a T, a kimeneti réteg előtt be kell illesztenie egy réteget, amely a megfelelő méretet adja ki. Például annak biztosítására, hogy Y a K osztályok predikciós pontszámainak 4-D tömbje, felvehet egy teljesen összekapcsolt K méretű réteget, amelyet egy softmax réteg követ a kimeneti réteg előtt.

A súlyozott osztályozási réteg kiszámítja a súlyozott kereszt entrópia veszteséget az osztályozási problémákra. A súlyozott kereszt entrópia két folyamatos véletlen változó hibamértéke. Az Y jóslati pontszámok és a T edzéscélok esetében az Y és T közötti kereszt entrópia súlyozott veszteségét adja meg

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

ahol N a megfigyelések száma, K az osztályok száma és w az egyes osztályok súlyvektora.

Az Y és T bemenetek megfelelnek az Y és T egyenletnek. A kimeneti veszteség L-nek felel meg. Adjon meg egy megjegyzést a függvény tetejére, amely elmagyarázza a függvény szintaxisait.

Mivel a forwardLoss függvény csak olyan funkciókat használ, amelyek támogatják a dlarray objektumokat, a backwardLoss függvény meghatározása nem kötelező. A dlarray objektumokat támogató funkciók listáját lásd: A dlarray támogatással rendelkező funkciók listája.

Befejezett réteg

Az elkészült osztályozási kimeneti réteg osztályfájljának megtekintése.

GPU kompatibilitás

Ha a réteg előre funkciói teljes mértékben támogatják a Dlarray objektumokat, akkor a réteg GPU-kompatibilis. Egyébként a GPU-kompatibilitás érdekében a rétegfunkcióknak támogatniuk kell a gpuArray (Parallel Computing Toolbox) típusú bemeneteket és visszatérő kimeneteket .

Sok MATLAB beépített funkció támogatja a gpuArray (Parallel Computing Toolbox) és a dlarray bemeneti argumentumokat. A dlarray objektumokat támogató funkciók listáját lásd: A dlarray támogatással rendelkező funkciók listája. A GPU-n végrehajtott funkciók listáját lásd: MATLAB függvények futtatása GPU-n (Parallel Computing Toolbox). A GPU mély tanuláshoz való használatához rendelkeznie kell egy CUDA®-kompatibilis NVIDIA® GPU-val, amely 3.0 vagy magasabb számítási képességgel rendelkezik. További információ a GPU-k használatáról a MATLAB-ban: GPU-számítás a MATLAB-ban (Parallel Computing Toolbox) .

A forwardLoss-ban a weightedClassificationLayer-ben használt MATLAB-függvények mind támogatják a dlarray objektumokat, így a réteg GPU-kompatibilis.

Ellenőrizze a kimeneti réteg érvényességét

Ellenőrizze a weightedClassificationLayer egyéni osztályozási kimeneti réteg érvényességét .

Adjon meg egy egyedi súlyozott osztályozási réteget. Ennek a rétegnek a létrehozásához mentse el a weightedClassificationLayer.m fájlt az aktuális mappába.

Hozzon létre egy példányt a rétegből. Adja meg az osztály súlyát vektorként, amelynek három eleme három osztálynak felel meg.

A checkLayer segítségével ellenőrizze, hogy a réteg érvényes-e. Állítsa be az érvényes bemeneti méretet a réteg egyetlen megfigyelési bemenetének tipikus méretére. A réteg 1-by-1-by-K-by-N tömb bemenetet vár, ahol K az osztályok száma, N pedig a megfigyelések száma a mini-kötegben.

A tesztösszefoglaló beszámol a sikeres, sikertelen, hiányos és kihagyott tesztek számáról.

Lásd még

Kapcsolódó témák

  • Definiálja az egyéni mély tanulási rétegeket
  • Definiálja az egyéni regressziós kimeneti réteget
  • Definiálja az egyéni mély tanulási réteget megtanulható paraméterekkel
  • Definiálja az egyéni mély tanulási réteget több bemenettel
  • Definiálja a beágyazott mély tanulási réteget
  • Adja meg az egyéni réteg visszafelé funkcióját
  • Adja meg az egyéni kimeneti réteg visszafelé történő veszteség funkcióját
  • Ellenőrizze a réteg érvényességét
  • Mélyen tanuló rétegek listája
  • Mély tanulási tippek és trükkök

Nyissa meg a Példa lehetőséget

Ennek a példának a módosított verziója létezik a rendszerén. Meg akarja nyitni ezt a verziót?