Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Een Neurale Netwerklaag Maken | Basisprincipes van TensorFlow
Introductie tot TensorFlow
Sectie 3. Hoofdstuk 1
single

single

Een Neurale Netwerklaag Maken

Veeg om het menu te tonen

Enkele Neurale Netwerklaag

In een eenvoudig feedforward-neuraal netwerk wordt de output van een neuron in een laag berekend met behulp van de gewogen som van zijn inputs, doorgegeven aan een activatiefunctie. Dit kan worden weergegeven als:

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

Waarbij:

  • yy: output van het neuron;
  • WW: een matrix die de gewichten voorstelt die verbonden zijn met het neuron;
  • xx: een kolommatrix (of vector) die de invoerwaarden naar het neuron voorstelt;
  • bb: een scalair waarde;
  • σ\sigma: een activatiefunctie, zoals de sigmoid-, ReLU- of softmaxfunctie.

Voor optimale prestaties worden alle berekeningen uitgevoerd met matrices. We zullen deze taak op dezelfde manier aanpakken.

carousel-imgcarousel-imgcarousel-imgcarousel-imgcarousel-img
Taak

Veeg om te beginnen met coderen

Gegeven gewichten, inputs en bias voor een enkele neuronlaag, bereken de output met behulp van matrixvermenigvuldiging en de sigmoid activatiefunctie. Beschouw een laag met 3 inputs en 2 neuronen, waarbij één batch slechts één sample bevat.

  1. Bepalen van vormen:

    • De vorm van de inputmatrix I moet als eerste dimensie het aantal samples in de batch hebben. Gezien één sample met 3 inputs, is de grootte 1x3;
    • De gewichtenmatrix W moet kolommen hebben die de inputgewichten voor elk neuron representeren. Dus voor 2 neuronen met 3 inputs is de verwachte vorm 3x2. Dit is niet het geval, dus je moet de gewichtenmatrix transponeren om de vereiste vorm te verkrijgen.
  2. Matrixvermenigvuldiging:

    • Met de matrices in de juiste vorm, voer de matrixvermenigvuldiging uit;
    • Onthoud dat bij matrixvermenigvuldiging de output wordt verkregen uit het dotproduct van elke rij van de eerste matrix met elke kolom van de tweede matrix. Zorg ervoor dat je in de juiste volgorde vermenigvuldigt.
  3. Bias toevoegen:

    • Voer een elementgewijze optelling uit van het resultaat van de matrixvermenigvuldiging met de bias.
  4. Toepassen van activatie:

    • Gebruik de sigmoid activatiefunctie op het resultaat van de biasoptelling om de output van het neuron te verkrijgen;
    • TensorFlow biedt de sigmoidfunctie aan als tf.sigmoid().

Opmerking

Aan het einde van de cursus gaan we dieper in op het implementeren van een volledig feed-forward netwerk met TensorFlow. Deze oefening vormt de basis daarvoor.

Oplossing

Codebeschrijving
expand arrow

Definieer laaggewichten, laaginvoer en laagbias

Hier definiëren we de gewichten, invoer en bias voor de laag. We gebruiken tf.Variable() voor gewichten en bias omdat dit trainbare parameters zijn in neurale netwerken, en tf.constant() voor de invoer omdat deze onveranderd blijft tijdens het trainen. dtype=tf.float64 wordt ingesteld voor de beste precisie.

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

Dit is de gewichtenmatrix voor de neurale laag. Elke rij vertegenwoordigt de gewichten voor één neuron ten opzichte van elke invoer.

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

Dit is de invoermatrix, die een enkele sample met 3 kenmerken voorstelt.

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

Dit is de biaswaarde. Het is een scalair die wordt toegevoegd aan de gewogen som voordat deze door de activatiefunctie gaat.

W = tf.transpose(W)

De gewichten zijn georganiseerd in rijen, maar voor matrixvermenigvuldiging moeten ze in kolommen staan. Daarom transponeren we de matrix. Hierna komt de eerste kolom overeen met de gewichten van het eerste neuron en de tweede kolom met die van het tweede neuron.

weighted_sum = tf.matmul(I, W)

Hier berekenen we de matrixvermenigvuldiging van de invoer en de getransponeerde gewichtenmatrix. Dit geeft ons de gewogen som van de inputs.

Laten we deze matrixvermenigvuldiging stap voor stap bekijken:

Bepaal de vorm van de resulterende matrix:

De resulterende matrix krijgt het aantal rijen van de eerste matrix (matrix I met vorm 1x3) en het aantal kolommen van de tweede matrix (matrix W met vorm 3x2). Dus de resulterende matrix heeft de vorm 1x2.

Proces van matrixvermenigvuldiging:

Voor het eerste element van de resulterende matrix (noemen we het S[0][0] voor "gewogen som"):

  • Vermenigvuldig het eerste element van de eerste rij van matrix I met het eerste element van de eerste kolom van matrix W: 0.5 * 0.5 = 0.25;
  • Vermenigvuldig het tweede element van de eerste rij van matrix I met het tweede element van de eerste kolom van matrix W: 0.6 * 0.4 = 0.24;
  • Vermenigvuldig het derde element van de eerste rij van matrix I met het derde element van de eerste kolom van matrix W: 0.1 * 0.7 = 0.07;
  • Tel deze producten op: 0.25 + 0.24 + 0.07 = 0.56.

Dus, S[0][0] is 0.56.

Voor het tweede element van de resulterende matrix (S[0][1]):

  • Vermenigvuldig het eerste element van de eerste rij van matrix I met het eerste element van de tweede kolom van matrix W: 0.5 * 0.1 = 0.05;
  • Vermenigvuldig het tweede element van de eerste rij van matrix I met het tweede element van de tweede kolom van matrix W: 0.6 * 0.9 = 0.54;
  • Vermenigvuldig het derde element van de eerste rij van matrix I met het derde element van de tweede kolom van matrix W: 0.1 * 0.5 = 0.05;
  • Tel deze producten op: 0.05 + 0.54 + 0.05 = 0.64.

Dus, S[0][1] is 0.64.

De resulterende matrix S van het vermenigvuldigen van matrix I en matrix W is dus:

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

De bias wordt toegevoegd aan de gewogen som. Dit is een vorm van affine transformatie die het resultaat verschuift om een betere fit tijdens het trainen te bereiken.

neuron_output = tf.sigmoid(biased_sum)

De sigmoidfunctie perst de waarde tussen 0 en 1, zodat onze output in een genormaliseerd bereik valt. Dit wordt vaak gebruikt bij binaire classificatieproblemen.

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 1
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

some-alt