Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Implementering af Neurale Netværk | Grundlæggende om TensorFlow
Introduktion til Tensorflow
Sektion 3. Kapitel 4
single

single

Implementering af Neurale Netværk

Stryg for at vise menuen

Grundlæggende oversigt over neurale netværk

Du er nu nået til et punkt, hvor du har den nødvendige viden om TensorFlow til selv at oprette neurale netværk. Selvom de fleste neurale netværk i virkeligheden er komplekse og typisk bygges ved hjælp af høj-niveau biblioteker som Keras, vil vi konstruere et grundlæggende netværk ved brug af fundamentale TensorFlow-værktøjer. Denne tilgang giver praktisk erfaring med lav-niveau tensor-manipulation, hvilket hjælper med at forstå de underliggende processer.

I tidligere kurser som Introduktion til neurale netværk, husker du måske, hvor meget tid og arbejde det krævede at bygge selv et simpelt neuralt netværk, hvor hver neuron blev behandlet individuelt.

single_neuron_calc

TensorFlow forenkler denne proces betydeligt. Ved at udnytte tensorer kan du indkapsle komplekse beregninger, hvilket reducerer behovet for indviklet kodning. Vores primære opgave er at opsætte en sekventiel pipeline af tensor-operationer.

Her er en kort genopfriskning af trinnene for at få en træningsproces for et neuralt netværk i gang:

Dataklargøring og modeloprettelse

Den indledende fase af træningen af et neuralt netværk omfatter klargøring af data, hvilket indebærer både input og output, som netværket skal lære fra. Derudover fastlægges modellens hyperparametre – disse er parametre, der forbliver uændrede gennem hele træningsprocessen. Vægtene initialiseres, typisk trukket fra en normalfordeling, og biaserne sættes ofte til nul.

Fremadrettet propagering

Ved fremadrettet propagering følger hvert lag i netværket typisk disse trin:

  1. Multiplicer lagets input med dets vægte.
  2. Læg en bias til resultatet.
  3. Anvend en aktiveringsfunktion på denne sum.
carousel-imgcarousel-imgcarousel-imgcarousel-imgcarousel-img

Derefter kan tab beregnes.

Baglæns propagering

Næste trin er baglæns propagering, hvor vægte og bias justeres baseret på deres indflydelse på tabet. Denne indflydelse er repræsenteret ved gradienten, som TensorFlows Gradient Tape automatisk beregner. Vægte og bias opdateres ved at trække gradienten, skaleret med læringsraten fra.

carousel-imgcarousel-imgcarousel-img

Træningssløjfe

For effektivt at træne det neurale netværk gentages træningstrinnene flere gange, mens modellens ydeevne overvåges. Ideelt set bør tabet falde over epokerne.

Opgave

Swipe to start coding

Opret et neuralt netværk designet til at forudsige resultaterne af XOR-operationen. Netværket skal bestå af 2 inputneuroner, et skjult lag med 2 neuroner og 1 outputneuron.

  1. Begynd med at opsætte de indledende vægte og biaser. Vægtene skal initialiseres ved hjælp af en normalfordeling, og alle biaser skal initialiseres til nul. Brug hyperparametrene input_size, hidden_size og output_size til at definere de korrekte dimensioner for disse tensorer.
  2. Udnyt en funktionsdekoration til at omdanne funktionen train_step() til en TensorFlow graf.
  3. Udfør fremadpropagering gennem både det skjulte og outputlaget i netværket. Brug sigmoid aktiveringsfunktion.
  4. Bestem gradienterne for at forstå, hvordan hver vægt og bias påvirker tabet. Sørg for, at gradienterne beregnes i den korrekte rækkefølge, svarende til navnene på outputvariablerne.
  5. Opdater vægte og biaser baseret på deres respektive gradienter. Inkludér learning_rate i denne justeringsproces for at styre størrelsen af hver opdatering.

Løsning

Kodebeskrivelse
expand arrow

Dataklargøring

  • X_data: dette er inputdataene til XOR-funktionen. Det er et NumPy-array med formen (4, 2), som repræsenterer de fire mulige kombinationer af XOR-inputtene (0,0), (0,1), (1,0) og (1,1);
  • Y_data: dette er måloutputtet for hver inputkombination i X_data. Det er også et NumPy-array, men med formen (4, 1), som repræsenterer XOR-outputtet for hvert inputpar.

Netværksparametre

  • input_size: størrelsen på inputlaget, sat til 2, svarende til de to inputnoder (for de to input til XOR-funktionen);
  • hidden_size: størrelsen på det skjulte lag, også sat til 2. Dette valg er delvist vilkårligt, men er tilstrækkeligt til at lære XOR-funktionen;
  • output_size: størrelsen på outputlaget, sat til 1, svarende til den enkelte outputnode (resultatet af XOR-operationen);
  • learning_rate: dette er indlæringsraten for optimeringsalgoritmen, som styrer hvor meget vægtene justeres under træningen.

Vægte og bias

  • W1 og b1: vægtene (W1) og bias (b1) for forbindelserne fra inputlaget til det skjulte lag. W1 er en TensorFlow-variabel initialiseret med tilfældige værdier og har formen (input_size, hidden_size), dvs. (2, 2). b1 er en TensorFlow-variabel initialiseret med nuller og har formen (hidden_size), dvs. (2);
  • W2 og b2: vægtene (W2) og bias (b2) for forbindelserne fra det skjulte lag til outputlaget. W2 er initialiseret med tilfældige værdier og har formen (hidden_size, output_size), dvs. (2, 1). b2 er initialiseret med nuller og har formen (output_size), dvs. (1).

Træningsfunktion

  • train_step(): dette er den centrale træningsfunktion. Den bruger tf.GradientTape() til automatisk differentiering. I forward pass beregnes aktiveringerne i det skjulte lag (a1) og outputforudsigelserne (Y_pred). Tabet beregnes som Mean Squared Error mellem Y_pred og Y. Funktionen beregner derefter gradienterne og opdaterer vægte og bias;
  • tf.sigmoid(): en sigmoid aktiveringsfunktion anvendes, som transformerer input til en værdi mellem 0 og 1. Denne bruges både til det skjulte lag og outputlaget.

Træningssløjfe

  • Netværket trænes i 2500 epoker. I hver epoke kaldes funktionen train_step(), og vægtene opdateres. Tabet udskrives for hver 500 epoker for at overvåge træningsforløbet.

Konklusion

Da XOR-funktionen er en forholdsvis enkel opgave, er der ikke behov for avancerede teknikker som hyperparametertuning, datasætopdeling eller opbygning af komplekse datapipelines på dette trin. Denne øvelse er blot et skridt på vejen mod at bygge mere avancerede neurale netværk til virkelige anvendelser.

Beherskelse af disse grundlæggende elementer er afgørende, før man går videre til avancerede teknikker til konstruktion af neurale netværk i kommende kurser, hvor vi vil bruge Keras-biblioteket og udforske metoder til at forbedre modelkvaliteten med TensorFlows mange funktioner.

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 4
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