Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Oprettelse af et Neuralt Netværkslag | Grundlæggende om TensorFlow
Introduktion til Tensorflow
Sektion 3. Kapitel 1
single

single

Oprettelse af et Neuralt Netværkslag

Stryg for at vise menuen

Enkelt lag i et neuralt netværk

I et grundlæggende feed-forward neuralt netværk beregnes outputtet fra en neuron i et lag ved hjælp af den vægtede sum af dens input, som derefter føres gennem en aktiveringsfunktion. Dette kan repræsenteres som:

y=σ(Wx+b)y=\sigma(W \cdot x + b)

Hvor:

  • yy: output fra neuronen;
  • WW: en matrix, der repræsenterer vægtene forbundet til neuronen;
  • xx: en kolonnematrix (eller vektor), der repræsenterer inputværdierne til neuronen;
  • bb: en skalarværdi;
  • σ\sigma: en aktiveringsfunktion, såsom sigmoid, ReLU eller softmax.

For at opnå den bedste ydeevne udføres alle beregninger ved hjælp af matricer. Vi vil håndtere denne opgave på samme måde.

carousel-imgcarousel-imgcarousel-imgcarousel-imgcarousel-img
Opgave

Swipe to start coding

Givet vægte, input og bias for et enkelt neuronlag, beregn dets output ved hjælp af matrixmultiplikation og sigmoid aktiveringsfunktion. Overvej et lag med 3 input og 2 neuroner, hvor der behandles et enkelt batch med kun én prøve.

  1. Bestemmelse af dimensioner:

    • Inputmatricens I form skal have sin første dimension som antallet af prøver i batchen. Givet én prøve med 3 input vil størrelsen være 1x3;
    • Vægtmatricen W skal have sine kolonner som inputvægte for hver neuron. For 2 neuroner med 3 input forventes formen at være 3x2. Dette er ikke tilfældet, så du skal transponere vægtmatricen for at opnå den krævede form.
  2. Matrixmultiplikation:

    • Når matricerne har den korrekte form, udfør matrixmultiplikationen;
    • Husk, at ved matrixmultiplikation udledes output fra prikproduktet af hver række i den første matrix med hver kolonne i den anden matrix. Sørg for at multiplicere i den rigtige rækkefølge.
  3. Bias-tilføjelse:

    • Udfør blot en elementvis addition af resultatet fra matrixmultiplikationen med bias.
  4. Anvendelse af aktivering:

    • Brug sigmoid aktiveringsfunktion på resultatet fra bias-tilføjelsen for at få neuronens output;
    • TensorFlow tilbyder sigmoid-funktionen som tf.sigmoid().

Bemærk

I slutningen af kurset vil vi dykke ned i implementeringen af et komplet feed-forward netværk med TensorFlow. Denne øvelse danner grundlaget for dette.

Løsning

Kodebeskrivelse
expand arrow

Definer lagets vægte, input og bias

Her defineres vægtene, input og bias for laget. Vi bruger tf.Variable() til vægte og bias, da disse er trænérbare parametre i neurale netværk, og tf.constant() til input, da det forbliver uændret under træning. dtype=tf.float64 er valgt for den bedste præcision.

W = tf.Variable([[0.5, 0.4, 0.7], [0.1, 0.9, 0.5]], dtype=tf.float64)

Dette er vægtmatricen for det neurale lag. Hver række repræsenterer vægtene for én neuron i forhold til hvert input.

I = tf.constant([[0.5, 0.6, 0.1]], dtype=tf.float64)

Dette er inputmatricen, som repræsenterer én prøve med 3 egenskaber.

b = tf.Variable(0.1, dtype=tf.float64)

Dette er bias-værdien. Det er en skalar, der lægges til den vægtede sum, før den føres gennem aktiveringsfunktionen.

W = tf.transpose(W)

Vægtene er organiseret i rækker, men til matrixmultiplikation skal de være i kolonner. Derfor transponeres matricen. Efter dette svarer den første kolonne til vægtene for den første neuron, og den anden kolonne til vægtene for den anden neuron.

weighted_sum = tf.matmul(I, W)

Her beregnes matrixmultiplikationen af input og den transponerede vægtmatrix. Dette giver os den vægtede sum af inputtene.

Lad os gennemgå denne matrixmultiplikation trin for trin:

Bestem formen på den resulterende matrix:

Den resulterende matrix vil have antallet af rækker fra den første matrix (matrix I med form 1x3) og antallet af kolonner fra den anden matrix (matrix W med form 3x2). Dermed vil den resulterende matrix have formen 1x2.

Matrixmultiplikationsproces:

For det første element i den resulterende matrix (lad os kalde det S[0][0] for "vægtet sum"):

  • Multiplicer første element i første række af matrix I med første element i første kolonne af matrix W: 0.5 * 0.5 = 0.25;
  • Multiplicer andet element i første række af matrix I med andet element i første kolonne af matrix W: 0.6 * 0.4 = 0.24;
  • Multiplicer tredje element i første række af matrix I med tredje element i første kolonne af matrix W: 0.1 * 0.7 = 0.07;
  • Summér disse produkter: 0.25 + 0.24 + 0.07 = 0.56.

S[0][0] er 0.56.

For det andet element i den resulterende matrix (S[0][1]):

  • Multiplicer første element i første række af matrix I med første element i anden kolonne af matrix W: 0.5 * 0.1 = 0.05;
  • Multiplicer andet element i første række af matrix I med andet element i anden kolonne af matrix W: 0.6 * 0.9 = 0.54;
  • Multiplicer tredje element i første række af matrix I med tredje element i anden kolonne af matrix W: 0.1 * 0.5 = 0.05;
  • Summér disse produkter: 0.05 + 0.54 + 0.05 = 0.64.

S[0][1] er 0.64.

Dermed er den resulterende matrix S fra multiplikationen af matrix I og matrix W:

[ [0.56, 0.64] ]
biased_sum = weighted_sum + b

Bias lægges til den vægtede sum. Dette er en form for affin transformation, som flytter resultatet for at opnå bedre tilpasning under træning.

neuron_output = tf.sigmoid(biased_sum)

Sigmoidfunktionen komprimerer værdien mellem 0 og 1, hvilket sikrer, at vores output er i et normaliseret interval. Den bruges ofte i binære klassifikationsproblemer.

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 1
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

some-alt