Az olyan Deep Learning keretrendszerek, mint a Keras, csökkentik a tömegek belépési korlátait, és demokratizálják a DL-modellek fejlesztését a tapasztalatlan emberek számára, akik az ésszerű alapértelmezésekre és az egyszerűsített API-kra támaszkodhatnak, hogy viseljék a nehéz teher viselését, és tisztességes eredményeket produkáljanak.
Gyakori zűrzavar merül fel az újabb mélytanulást gyakorló szakemberek között, amikor Keras veszteségfüggvényeket használnak osztályozáshoz, mint pl. CategoricalCrossentropy
és a SparseCategoricalCrossentropy
:
loss = keras.losses.SparseCategoricalCrossentropy(from_logits=True)
loss = keras.losses.SparseCategoricalCrossentropy(from_logits=False)
Mit csinál a
from_logits
zászló utal?
A válasz meglehetősen egyszerű, de meg kell nézni annak a hálózatnak a kimenetét, amelyet a veszteségfüggvénnyel próbálunk osztályozni.
Logitok és SoftMax valószínűségek
Hosszú történet rövid:
A valószínűségek normalizálva vannak – azaz van egy tartományuk
[0..1]
. A logitok nincsenek normalizálva, és ezek között lehetnek[-inf...+inf]
.
A hálózat kimeneti rétegétől függően:
output = keras.layers.Dense(n, activation='softmax')(x)
output = keras.layers.Dense(n)(x)
A kimenet a Dense
réteg lesz bármelyik Visszatérés:
- valószínűségek: A kimenet egy SoftMax függvényen megy keresztül, amely normalizálja a kimenetet a valószínűségek halmazává
n
, ez mind összeadódik1
. - logits:
n
aktiválások.
Ez a tévhit feltehetően a rövidített szintaxisból adódik, amely lehetővé teszi, hogy aktiválást adjon egy réteghez, látszólag egyetlen rétegként, még akkor is, ha ez csak a következő rövidítése:
output = keras.layers.Dense(n, activation='softmax')(x)
dense = keras.layers.Dense(n)(x)
output = keras.layers.Activation('softmax')(dense)
A veszteségfüggvényt tájékoztatni kell arról, hogy normalizált eloszlásra (a kimenet egy SoftMax függvényen megy keresztül) vagy logitokra kell-e számítania. Ezért a from_logits
zászló!
Mikor kellene from_logits=Igaz?
Ha a hálózat normalizálja a kimeneti valószínűségeket, a veszteségfüggvényt be kell állítani from_logits
nak nek False
, mivel nem fogad logitokat. Ez egyben az összes veszteségosztály alapértelmezett értéke is, amely elfogadja a jelzőt, mivel a legtöbb ember hozzáad egy activation='softmax'
kimeneti rétegeikhez:
model = keras.Sequential([
keras.layers.Input(shape=(10, 1)),
keras.layers.Dense(10, activation='softmax')
])
input_data = tf.random.uniform(shape=[1, 1])
output = model(input_data)
print(output)
Ennek eredményeként:
tf.Tensor(
[[[0.12467965 0.10423233 0.10054766 0.09162105 0.09144577 0.07093797
0.12523937 0.11292477 0.06583504 0.11253635]]], shape=(1, 1, 10), dtype=float32)
Mivel ez a hálózat normalizált eloszlást eredményez – amikor a kimeneteket összehasonlítjuk a célkimenetekkel, és osztályozási veszteségfüggvénnyel osztályozzuk (a megfelelő feladathoz) – be kellene állítani from_logits
nak nek False
, vagy maradjon az alapértelmezett érték.
Másrészt, ha a hálózat nem alkalmaz SoftMax-ot a kimeneten:
model = keras.Sequential([
keras.layers.Input(shape=(10, 1)),
keras.layers.Dense(10)
])
input_data = tf.random.uniform(shape=[1, 1])
output = model(input_data)
print(output)
Ennek eredményeként:
tf.Tensor(
[[[-0.06081138 0.04154852 0.00153442 0.0705068 -0.01139916
0.08506121 0.1211026 -0.10112958 -0.03410497 0.08653068]]], shape=(1, 1, 10), dtype=float32)
Be kellene állítani from_logits
nak nek True
hogy a veszteségfüggvény megfelelően kezelje a kimeneteket.
Mikor használjuk a SoftMax-ot a kimeneten?
A legtöbb gyakorló a SoftMax-ot alkalmazza a kimeneten, hogy normalizált valószínűségi eloszlást adjon, mivel sok esetben erre kell használni a hálózatot – különösen az egyszerűsített oktatási anyagokban. Bizonyos esetekben azonban Ön nem szeretné alkalmazni a függvényt a kimenetre, más módon feldolgozni a SoftMax vagy más függvény alkalmazása előtt.
Egy figyelemre méltó példa az NLP-modellekből származik, amelyekben a kimeneti tenzorban valóban egy nagy szókincs valószínűsége lehet jelen. SoftMax felhordása mindegyikük és mohón kapva a argmax
általában nem hoz túl jó eredményeket.
Ha azonban megfigyeli a logitokat, vegye ki a Top-K-t (ahol K bármilyen szám lehet, de általában valahol [0...10]
), és csak ezután alkalmazza a SoftMax-ot a top-k A szókincs lehetséges jelzői jelentősen eltolják az eloszlást, és általában reálisabb eredményeket hoznak.
Tekintse meg gyakorlatias, gyakorlati útmutatónkat a Git tanulásához, amely tartalmazza a bevált gyakorlatokat, az iparág által elfogadott szabványokat és a mellékelt csalólapot. Hagyd abba a guglizást a Git parancsokkal, és valójában tanulni meg!
Ezt Top-K mintavételnek nevezik, és bár nem ez az ideális stratégia, általában jelentősen felülmúlja a mohó mintavételt.
Továbblépve – Gyakorlati mélytanulás a számítógépes látáshoz
Érdeklődő természete arra készteti, hogy tovább menjen? Javasoljuk, hogy tekintse meg nálunk Tanfolyam: „Practical Deep Learning for Computer Vision with Python”.
Újabb számítógépes látás tanfolyam?
Nem végezzük az MNIST számjegyek osztályozását vagy az MNIST divatot. Régen kiszolgálták a részüket. Túl sok tanulási erőforrás összpontosít az alapvető adatkészletekre és alapvető architektúrákra, mielőtt a fejlett feketedoboz-architektúrákra hagyná a teljesítmény terhét.
Mi arra szeretnénk koncentrálni demisztifikáció, gyakorlatiasság, megértés, intuíció és a valódi projektek. Tanulni akar hogyan tudsz változtatni? Elvezetjük Önt az agyunk képfeldolgozási módjától a mellrák kutatási szintű mélytanulási osztályozójának megírásáig a mély tanulási hálózatokig, amelyek „hallucinálnak”, gyakorlati munkán keresztül megtanítjuk az alapelveket és az elméletet, felkészítve a know-how és eszközök ahhoz, hogy szakértővé váljon a mélytanulás alkalmazásában a számítógépes látás megoldásában.
Mi van benne?
- A látás első alapelvei és hogyan lehet a számítógépeket „látni” tanítani
- A számítógépes látás különböző feladatai és alkalmazásai
- A szakma eszközei, amelyek megkönnyítik a munkáját
- Adatkészletek keresése, létrehozása és felhasználása számítógépes látáshoz
- A konvolúciós neurális hálózatok elmélete és alkalmazása
- Tartományeltolódás, együttes előfordulás és egyéb torzítások kezelése az adatkészletekben
- Transzfer Tanulás és mások képzési idejének és számítási erőforrásainak felhasználása az Ön javára
- Korszerű emlőrák osztályozó felépítése és betanítása
- Hogyan alkalmazzunk egy egészséges adag szkepticizmust a mainstream ötletekhez, és hogyan értsük meg a széles körben elfogadott technikák következményeit
- A ConvNet „koncepcióterének” megjelenítése t-SNE és PCA segítségével
- Esettanulmányok arról, hogy a vállalatok hogyan használják a számítógépes látástechnikákat a jobb eredmények elérése érdekében
- Megfelelő modellértékelés, látens tér vizualizáció és a modell figyelmének azonosítása
- Domainkutatás végzése, saját adatkészletek feldolgozása és modelltesztek létrehozása
- Élvonalbeli architektúrák, az ötletek fejlődése, mi teszi őket egyedivé és hogyan valósítsuk meg őket
- KerasCV – WIP-könyvtár a legkorszerűbb csővezetékek és modellek létrehozásához
- Hogyan elemezze és olvassa el a dolgozatokat, és saját maga hajtsa végre azokat
- Modellek kiválasztása az alkalmazástól függően
- Végpontok közötti gépi tanulási folyamat létrehozása
- Tájkép és intuíció a tárgyfelismeréshez a gyorsabb R-CNN-ekkel, RetinaNetekkel, SSD-kkel és YOLO-val
- Példány és szemantikai szegmentáció
- Valós idejű objektumfelismerés a YOLOv5 segítségével
- YOLOv5 objektumdetektorok képzése
- Transzformátorokkal való munkavégzés KerasNLP-vel (ipari erősségű WIP-könyvtár)
- Transformers integrálása ConvNetekkel a képek feliratainak létrehozásához
- Deepdream
Következtetés
Ebben a rövid útmutatóban áttekintettük a from_logits
érv a Keras veszteségosztályai mellett, ami gyakran kérdéseket vet fel az újabb szakemberekben.
A zűrzavar valószínűleg abból a rövidített szintaxisból adódik, amely lehetővé teszi aktivációs rétegek hozzáadását a többi réteghez, magának a rétegnek a definícióján belül. Végre megnéztük, hogy mikor kell az érvelést beállítani True
or False
, és amikor egy kimenetet logitként kell hagyni, vagy át kell vinni egy aktiváló funkción, például a SoftMax-en.