single
Oppretting av et Nevralt Nettverkslag
Sveip for å vise menyen
Enkelt nevralt nettverkslag
I et grunnleggende fremovermatet nevralt nettverk beregnes utdataene til et nevron i et lag ved hjelp av vektet sum av inngangene, som deretter sendes gjennom en aktiveringsfunksjon. Dette kan representeres som:
y=σ(W⋅x+b)
Hvor:
- y: utdata fra nevronet;
- W: en matrise som representerer vektene knyttet til forbindelsene til nevronet;
- x: en kolonnematrise (eller vektor) som representerer inngangsverdiene til nevronet;
- b: en skalarverdi;
- σ: en aktiveringsfunksjon, som sigmoid, ReLU eller softmax-funksjon.
For å oppnå best mulig ytelse utføres alle beregninger ved hjelp av matriser. Vi vil løse denne oppgaven på samme måte.





Sveip for å begynne å kode
Gitt vekter, inputverdier og bias for et enkelt nevronlag, beregn utdataene ved hjelp av matrisemultiplikasjon og sigmoid aktiveringsfunksjon. Tenk deg et lag med 3 inputverdier og 2 nevroner, hvor du har en enkelt batch med kun én prøve.
-
Bestemme dimensjoner:
- Inputmatrisen
Iskal ha sin første dimensjon som representerer antall prøver i batchen. Med én prøve og 3 inputverdier blir størrelsen1x3; - Vektmatrisen
Wskal ha kolonner som representerer inputvekter for hvert nevron. For 2 nevroner med 3 inputverdier forventes formen3x2. Dette er ikke tilfellet, så du må transponere vektmatrisen for å oppnå ønsket form.
- Inputmatrisen
-
Matrisemultiplikasjon:
- Når matrisene har riktig form, utfør matrisemultiplikasjonen;
- Husk at ved matrisemultiplikasjon beregnes utdataene som prikkproduktet av hver rad i den første matrisen med hver kolonne i den andre matrisen. Sørg for å multiplisere i riktig rekkefølge.
-
Legge til bias:
- Utfør en elementvis addisjon av resultatet fra matrisemultiplikasjonen med bias.
-
Bruke aktivering:
- Bruk sigmoid aktiveringsfunksjon på resultatet etter bias-addisjon for å få utdataene fra nevronet;
- TensorFlow tilbyr sigmoid-funksjonen som
tf.sigmoid().
Merk
Mot slutten av kurset vil vi implementere et komplett feed-forward-nettverk med TensorFlow. Denne øvelsen legger grunnlaget for det.
Løsning
Definer lagets vekter, lagets innganger og lagets bias
Her definerer vi vektene, inngangene og bias for laget. Vi bruker tf.Variable() for vekter og bias siden disse er trenbare parametere i nevrale nettverk, og tf.constant() for inngangen siden den forblir uendret under trening. dtype=tf.float64 er satt for best mulig presisjon.
W = tf.Variable([[0.5, 0.4, 0.7], [0.1, 0.9, 0.5]], dtype=tf.float64)
Dette er vektmatrisen for det nevrale laget. Hver rad representerer vektene for ett nevron med hensyn til hver inngang.
I = tf.constant([[0.5, 0.6, 0.1]], dtype=tf.float64)
Dette er inngangsmatrisen, som representerer én prøve med 3 egenskaper.
b = tf.Variable(0.1, dtype=tf.float64)
Dette er bias-verdien. Det er en skalar som legges til den vektede summen før den sendes gjennom aktiveringsfunksjonen.
W = tf.transpose(W)
Vektene er organisert i rader, men for matrise-multiplikasjon må de være i kolonner. Derfor transponerer vi matrisen. Etter dette tilsvarer første kolonne vektene til det første nevronet, og andre kolonne til det andre nevronet.
weighted_sum = tf.matmul(I, W)
Her utfører vi matrise-multiplikasjon av inngangen og den transponerte vektmatrisen. Dette gir oss den vektede summen av inngangene.
La oss bryte ned denne matrise-multiplikasjonen steg for steg:
Bestem formen på resultatmatrisen:
Resultatmatrisen vil ha antall rader fra den første matrisen (matrise I med form 1x3) og antall kolonner fra den andre matrisen (matrise W med form 3x2). Dermed vil resultatmatrisen ha form 1x2.
Prosess for matrise-multiplikasjon:
For det første elementet i resultatmatrisen (la oss kalle det S[0][0] for "vektet sum"):
- Multipliser første element i første rad i matrise
Imed første element i første kolonne i matriseW:0.5 * 0.5 = 0.25; - Multipliser andre element i første rad i matrise
Imed andre element i første kolonne i matriseW:0.6 * 0.4 = 0.24; - Multipliser tredje element i første rad i matrise
Imed tredje element i første kolonne i matriseW:0.1 * 0.7 = 0.07; - Summer disse produktene:
0.25 + 0.24 + 0.07 = 0.56.
Så, S[0][0] er 0.56.
For det andre elementet i resultatmatrisen (S[0][1]):
- Multipliser første element i første rad i matrise
Imed første element i andre kolonne i matriseW:0.5 * 0.1 = 0.05; - Multipliser andre element i første rad i matrise
Imed andre element i andre kolonne i matriseW:0.6 * 0.9 = 0.54; - Multipliser tredje element i første rad i matrise
Imed tredje element i andre kolonne i matriseW:0.1 * 0.5 = 0.05; - Summer disse produktene:
0.05 + 0.54 + 0.05 = 0.64.
Så, S[0][1] er 0.64.
Dermed er resultatmatrisen S fra multiplikasjon av matrise I og matrise W:
[ [0.56, 0.64] ]
biased_sum = weighted_sum + b
Bias legges til den vektede summen. Dette er en form for affin transformasjon som forskyver resultatet for å oppnå bedre tilpasning under trening.
neuron_output = tf.sigmoid(biased_sum)
Sigmoid-funksjonen presser verdien mellom 0 og 1, og sikrer at utdataene våre er i et normalisert område. Den brukes ofte i binære klassifiseringsproblemer.
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår