Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Creazione di un Livello di Rete Neurale | Basi di TensorFlow
Introduzione a TensorFlow

Creazione di un Livello di Rete Neurale

Singolo strato di rete neurale

In una rete neurale feed-forward di base, l'output di un neurone in uno strato viene calcolato utilizzando la somma pesata dei suoi input, passata attraverso una funzione di attivazione. Questo può essere rappresentato come:

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

Dove:

  • yy: output del neurone;
  • WW: matrice che rappresenta i pesi associati alle connessioni verso il neurone;
  • xx: matrice colonna (o vettore) che rappresenta i valori di input al neurone;
  • bb: valore scalare;
  • σ\sigma: funzione di attivazione, come la funzione sigmoid, ReLU o softmax.

Per ottenere le migliori prestazioni, tutti i calcoli vengono eseguiti utilizzando matrici. Affronteremo questo compito nello stesso modo.

carousel-imgcarousel-imgcarousel-imgcarousel-imgcarousel-img
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 1
single

single

Creazione di un Livello di Rete Neurale

Scorri per mostrare il menu

Singolo strato di rete neurale

In una rete neurale feed-forward di base, l'output di un neurone in uno strato viene calcolato utilizzando la somma pesata dei suoi input, passata attraverso una funzione di attivazione. Questo può essere rappresentato come:

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

Dove:

  • yy: output del neurone;
  • WW: matrice che rappresenta i pesi associati alle connessioni verso il neurone;
  • xx: matrice colonna (o vettore) che rappresenta i valori di input al neurone;
  • bb: valore scalare;
  • σ\sigma: funzione di attivazione, come la funzione sigmoid, ReLU o softmax.

Per ottenere le migliori prestazioni, tutti i calcoli vengono eseguiti utilizzando matrici. Affronteremo questo compito nello stesso modo.

carousel-imgcarousel-imgcarousel-imgcarousel-imgcarousel-img
Compito

Scorri per iniziare a programmare

Dati i pesi, gli input e il bias per uno strato di un singolo neurone, calcolare l'output utilizzando la moltiplicazione matriciale e la funzione di attivazione sigmoide. Considera uno strato con 3 input e 2 neuroni, prendendo un singolo batch contenente solo un campione.

  1. Determinazione delle forme:

    • La forma della matrice di input I deve avere la prima dimensione che rappresenta il numero di campioni nel batch. Dato un campione con 3 input, la sua dimensione sarà 1x3;
    • La matrice dei pesi W deve avere le colonne che rappresentano i pesi di input per ciascun neurone. Quindi, per 2 neuroni con 3 input, la forma attesa è 3x2. Se non è così, è necessario trasporre la matrice dei pesi per ottenere la forma richiesta.
  2. Moltiplicazione matriciale:

    • Con le matrici nella forma corretta, eseguire la moltiplicazione matriciale;
    • Ricorda che nella moltiplicazione matriciale, l'output deriva dal prodotto scalare di ogni riga della prima matrice con ogni colonna della seconda matrice. Assicurati di moltiplicare nell'ordine corretto.
  3. Aggiunta del bias:

    • Eseguire semplicemente una somma elemento per elemento del risultato della moltiplicazione matriciale con il bias.
  4. Applicazione dell'attivazione:

    • Utilizzare la funzione di attivazione sigmoide sul risultato dell'aggiunta del bias per ottenere l'output del neurone;
    • TensorFlow fornisce la funzione sigmoide come tf.sigmoid().

Nota

Alla fine del corso approfondiremo l'implementazione di una rete feed-forward completa utilizzando TensorFlow. Questo esercizio pone le basi per questo.

Soluzione

Descrizione del codice
expand arrow

Definizione dei pesi dello strato, degli input e del bias dello strato

Qui vengono definiti i pesi, gli input e il bias per lo strato. Si utilizza tf.Variable() per pesi e bias poiché sono parametri addestrabili nelle reti neurali, e tf.constant() per l'input poiché rimane invariato durante l'addestramento. Si imposta dtype=tf.float64 per la massima precisione.

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

Questa è la matrice dei pesi per lo strato neurale. Ogni riga rappresenta i pesi per un neurone rispetto a ciascun input.

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

Questa è la matrice di input, che rappresenta un singolo campione con 3 caratteristiche.

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

Questo è il valore di bias. È uno scalare che viene aggiunto alla somma pesata prima di passare attraverso la funzione di attivazione.

W = tf.transpose(W)

I pesi sono organizzati in righe, ma per la moltiplicazione tra matrici devono essere in colonne. Pertanto, trasponiamo la matrice. Dopo questa operazione, la prima colonna corrisponde ai pesi del primo neurone e la seconda colonna a quelli del secondo neurone.

weighted_sum = tf.matmul(I, W)

Qui si calcola la moltiplicazione tra la matrice di input e la matrice dei pesi trasposta. Questo ci fornisce la somma pesata degli input.

Analizziamo questa moltiplicazione tra matrici passo dopo passo:

Determinare la forma della matrice risultante:

La matrice risultante avrà il numero di righe della prima matrice (matrice I di forma 1x3) e il numero di colonne della seconda matrice (matrice W di forma 3x2). Quindi, la matrice risultante avrà forma 1x2.

Processo di moltiplicazione tra matrici:

Per il primo elemento della matrice risultante (chiamiamolo S[0][0] per "somma pesata"):

  • Moltiplicare il primo elemento della prima riga della matrice I per il primo elemento della prima colonna della matrice W: 0.5 * 0.5 = 0.25;
  • Moltiplicare il secondo elemento della prima riga della matrice I per il secondo elemento della prima colonna della matrice W: 0.6 * 0.4 = 0.24;
  • Moltiplicare il terzo elemento della prima riga della matrice I per il terzo elemento della prima colonna della matrice W: 0.1 * 0.7 = 0.07;
  • Sommare questi prodotti: 0.25 + 0.24 + 0.07 = 0.56.

Quindi, S[0][0] è 0.56.

Per il secondo elemento della matrice risultante (S[0][1]):

  • Moltiplicare il primo elemento della prima riga della matrice I per il primo elemento della seconda colonna della matrice W: 0.5 * 0.1 = 0.05;
  • Moltiplicare il secondo elemento della prima riga della matrice I per il secondo elemento della seconda colonna della matrice W: 0.6 * 0.9 = 0.54;
  • Moltiplicare il terzo elemento della prima riga della matrice I per il terzo elemento della seconda colonna della matrice W: 0.1 * 0.5 = 0.05;
  • Sommare questi prodotti: 0.05 + 0.54 + 0.05 = 0.64.

Quindi, S[0][1] è 0.64.

Pertanto, la matrice risultante S dalla moltiplicazione tra la matrice I e la matrice W è:

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

Il bias viene aggiunto alla somma pesata. Questa è una forma di trasformazione affine che sposta il risultato per ottenere un migliore adattamento durante l'addestramento.

neuron_output = tf.sigmoid(biased_sum)

La funzione sigmoid comprime il valore tra 0 e 1, assicurando che il nostro output sia in un intervallo normalizzato. È comunemente utilizzata nei problemi di classificazione binaria.

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 1
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

some-alt