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=σ(W⋅x+b)
Dove:
- y: output del neurone;
- W: matrice che rappresenta i pesi associati alle connessioni verso il neurone;
- x: matrice colonna (o vettore) che rappresenta i valori di input al neurone;
- b: valore scalare;
- σ: 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.





Grazie per i tuoi commenti!
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=σ(W⋅x+b)
Dove:
- y: output del neurone;
- W: matrice che rappresenta i pesi associati alle connessioni verso il neurone;
- x: matrice colonna (o vettore) che rappresenta i valori di input al neurone;
- b: valore scalare;
- σ: 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.





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.
-
Determinazione delle forme:
- La forma della matrice di input
Ideve 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
Wdeve 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.
- La forma della matrice di input
-
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.
-
Aggiunta del bias:
- Eseguire semplicemente una somma elemento per elemento del risultato della moltiplicazione matriciale con il bias.
-
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
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
Iper il primo elemento della prima colonna della matriceW:0.5 * 0.5 = 0.25; - Moltiplicare il secondo elemento della prima riga della matrice
Iper il secondo elemento della prima colonna della matriceW:0.6 * 0.4 = 0.24; - Moltiplicare il terzo elemento della prima riga della matrice
Iper il terzo elemento della prima colonna della matriceW: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
Iper il primo elemento della seconda colonna della matriceW:0.5 * 0.1 = 0.05; - Moltiplicare il secondo elemento della prima riga della matrice
Iper il secondo elemento della seconda colonna della matriceW:0.6 * 0.9 = 0.54; - Moltiplicare il terzo elemento della prima riga della matrice
Iper il terzo elemento della seconda colonna della matriceW: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.
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione