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=σ(W⋅x+b)
Hvor:
- y: output fra neuronen;
- W: en matrix, der repræsenterer vægtene forbundet til neuronen;
- x: en kolonnematrix (eller vektor), der repræsenterer inputværdierne til neuronen;
- b: en skalarværdi;
- σ: 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.





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.
-
Bestemmelse af dimensioner:
- Inputmatricens
Iform skal have sin første dimension som antallet af prøver i batchen. Givet én prøve med 3 input vil størrelsen være1x3; - Vægtmatricen
Wskal have sine kolonner som inputvægte for hver neuron. For 2 neuroner med 3 input forventes formen at være3x2. Dette er ikke tilfældet, så du skal transponere vægtmatricen for at opnå den krævede form.
- Inputmatricens
-
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.
-
Bias-tilføjelse:
- Udfør blot en elementvis addition af resultatet fra matrixmultiplikationen med bias.
-
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
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
Imed første element i første kolonne af matrixW:0.5 * 0.5 = 0.25; - Multiplicer andet element i første række af matrix
Imed andet element i første kolonne af matrixW:0.6 * 0.4 = 0.24; - Multiplicer tredje element i første række af matrix
Imed tredje element i første kolonne af matrixW:0.1 * 0.7 = 0.07; - Summér disse produkter:
0.25 + 0.24 + 0.07 = 0.56.
Så 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
Imed første element i anden kolonne af matrixW:0.5 * 0.1 = 0.05; - Multiplicer andet element i første række af matrix
Imed andet element i anden kolonne af matrixW:0.6 * 0.9 = 0.54; - Multiplicer tredje element i første række af matrix
Imed tredje element i anden kolonne af matrixW:0.1 * 0.5 = 0.05; - Summér disse produkter:
0.05 + 0.54 + 0.05 = 0.64.
Så 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.
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat