Mit jelent a 'from_logits=True' a Keras/TensorFlow Loss Functions-ban? PlatoBlockchain adatintelligencia. Függőleges keresés. Ai.

Mit jelent a 'from_logits=True' a Keras/TensorFlow Loss Functions-ban?

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ódik 1.
  • 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.

Időbélyeg:

Még több Stackabus