Hvad er 'from_logits=True' i Keras/TensorFlow-tabsfunktioner? PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Hvad er 'from_logits=True' i Keras/TensorFlow-tabsfunktioner?

Deep Learning-rammer som Keras sænker adgangsbarrieren for masserne og demokratiserer udviklingen af ​​DL-modeller til uerfarne folk, som kan stole på rimelige standardindstillinger og forenklede API'er for at bære hovedparten af ​​tunge løft og producere anstændige resultater.

En almindelig forvirring opstår mellem nyere deep learning praktikere, når de bruger Keras tabsfunktioner til klassificering, som f.eks. CategoricalCrossentropy , SparseCategoricalCrossentropy:

loss = keras.losses.SparseCategoricalCrossentropy(from_logits=True)

loss = keras.losses.SparseCategoricalCrossentropy(from_logits=False)

Hvad gør from_logits flag henvise til?

Svaret er ret simpelt, men kræver et kig på outputtet fra det netværk, vi forsøger at bedømme ved hjælp af tabsfunktionen.

Logits og SoftMax Probabilities

Kort fortalt:

Sandsynligheder er normaliserede – altså har et interval mellem [0..1]. Logits er ikke normaliseret og kan have et interval mellem [-inf...+inf].

Afhængigt af outputlaget på dit netværk:

output = keras.layers.Dense(n, activation='softmax')(x)

output = keras.layers.Dense(n)(x)

Output fra Dense lag vil enten Vend tilbage:

  • sandsynligheder: Outputtet sendes gennem en SoftMax-funktion, som normaliserer outputtet til et sæt sandsynligheder over n, som alle lægger op til 1.
  • logits: n aktiveringer.

Denne misforståelse opstår muligvis fra den korte syntaks, der giver dig mulighed for at tilføje en aktivering til et lag, tilsyneladende som et enkelt lag, selvom det kun er en forkortelse for:

output = keras.layers.Dense(n, activation='softmax')(x)

dense = keras.layers.Dense(n)(x)
output = keras.layers.Activation('softmax')(dense)

Din tabsfunktion skal informeres om, hvorvidt den skal forvente en normaliseret fordeling (output passeret gennem en SoftMax-funktion) eller logits. Derfor er from_logits flag!

Hvornår skal from_logits=Sandt?

Hvis dit netværk normaliserer outputsandsynligheden, bør din tabsfunktion indstilles from_logits til False, da den ikke accepterer logits. Dette er også standardværdien for alle tabsklasser, der accepterer flaget, da de fleste tilføjer en activation='softmax' til deres outputlag:

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)

Dette resulterer i:

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)

Da dette netværk resulterer i en normaliseret fordeling – når man sammenligner output med måloutput og graduerer dem via en klassifikationstabsfunktion (til den relevante opgave) – du bør indstille from_logits til False, eller lad standardværdien forblive.

På den anden side, hvis dit netværk ikke anvender SoftMax på outputtet:

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)

Dette resulterer i:

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)

Du bliver nødt til at indstille from_logits til True for at tabsfunktionen kan behandle udgangene korrekt.

Hvornår skal man bruge SoftMax på outputtet?

De fleste behandlere anvender SoftMax på outputtet for at give en normaliseret sandsynlighedsfordeling, da det i mange tilfælde er det, du vil bruge et netværk til – især i forenklet undervisningsmateriale. I nogle tilfælde kan du dog ikke ønsker at anvende funktionen på outputtet, at behandle den på en anden måde, før du anvender enten SoftMax eller en anden funktion.

Et bemærkelsesværdigt eksempel kommer fra NLP-modeller, hvor sandsynligheden for et stort ordforråd virkelig kan være til stede i outputtensoren. Påføring af SoftMax over allesammen og grådigt at få argmax giver typisk ikke særlig gode resultater.

Men hvis du observerer logits, skal du udtrække Top-K (hvor K kan være et hvilket som helst tal, men er typisk et sted mellem [0...10]), og først derefter anvende SoftMax til top-k mulige tokens i ordforrådet flytter fordelingen betydeligt og giver normalt mere realistiske resultater.

Tjek vores praktiske, praktiske guide til at lære Git, med bedste praksis, brancheaccepterede standarder og inkluderet snydeark. Stop med at google Git-kommandoer og faktisk lærer det!

Dette er kendt som Top-K-sampling, og selvom det ikke er den ideelle strategi, overgår det normalt betydeligt den grådige sampling.

Gå videre – Praktisk dyb læring til computersyn

Din nysgerrige natur giver dig lyst til at gå længere? Vi anbefaler at tjekke vores Kursus: "Praktisk dyb læring til computersyn med Python".

Endnu et kursus i computersyn?

Vi laver ikke klassificering af MNIST-cifre eller MNIST-mode. De tjente deres del for længe siden. For mange læringsressourcer fokuserer på grundlæggende datasæt og grundlæggende arkitekturer, før de lader avancerede black-box-arkitekturer bære byrden af ​​ydeevne.

Vi ønsker at fokusere på afmystificering, praktisk, forståelse, intuition , rigtige projekter. Vil gerne lære hvordan kan du gøre en forskel? Vi tager dig med på en tur fra den måde, vores hjerner behandler billeder på, til at skrive en deep learning-klassificerer for brystkræft i forskningsklasse til deep learning-netværk, der "hallucinerer", lærer dig principperne og teorien gennem praktisk arbejde, og udstyrer dig med knowhow og værktøjer til at blive ekspert i at anvende dyb læring til at løse computervision.

Hvad er der indenfor?

  • De første principper for vision og hvordan computere kan læres at "se"
  • Forskellige opgaver og anvendelser af computersyn
  • Branchens værktøjer, der vil gøre dit arbejde lettere
  • Finde, skabe og bruge datasæt til computervision
  • Teorien og anvendelsen af ​​​​konvolutionelle neurale netværk
  • Håndtering af domæneskift, samtidige forekomster og andre skævheder i datasæt
  • Overfør Læring og udnyttelse af andres træningstid og beregningsressourcer til din fordel
  • Opbygning og træning af en avanceret brystkræftklassificering
  • Hvordan man anvender en sund dosis skepsis til mainstream ideer og forstår implikationerne af vidt anvendte teknikker
  • Visualisering af et ConvNets "konceptrum" ved hjælp af t-SNE og PCA
  • Casestudier af, hvordan virksomheder bruger computervisionsteknikker til at opnå bedre resultater
  • Korrekt modelevaluering, latent rumvisualisering og identifikation af modellens opmærksomhed
  • Udførelse af domæneforskning, bearbejdning af dine egne datasæt og etablering af modeltest
  • Banebrydende arkitekturer, udviklingen af ​​ideer, hvad der gør dem unikke, og hvordan man implementerer dem
  • KerasCV – et WIP-bibliotek til at skabe state of the art pipelines og modeller
  • Hvordan man analyserer og læser papirer og implementerer dem selv
  • Valg af modeller afhængigt af din applikation
  • Oprettelse af en end-to-end machine learning pipeline
  • Landskab og intuition på objektdetektion med hurtigere R-CNN'er, RetinaNets, SSD'er og YOLO
  • Forekomst og semantisk segmentering
  • Objektgenkendelse i realtid med YOLOv5
  • Træning af YOLOv5 objektdetektorer
  • Arbejde med transformere ved hjælp af KerasNLP (industristærkt WIP-bibliotek)
  • Integrering af transformere med ConvNets for at generere billedtekster
  • Deepdream

Konklusion

I denne korte guide har vi taget et kig på from_logits argument for Keras-tabsklasser, som ofte rejser spørgsmål hos nyere praktiserende læger.

Forvirringen opstår muligvis fra den korte syntaks, der tillader tilføjelse af aktiveringslag oven på andre lag inden for definitionen af ​​et lag selv. Vi har endelig taget et kig på, hvornår argumentet skal sættes til True or False, og når et output skal efterlades som logits eller føres gennem en aktiveringsfunktion såsom SoftMax.

Tidsstempel:

Mere fra Stablemisbrug