Ho una domanda che può essere banale ma non è descritta da nessuna parte che ho guardato. Sto studiando reti neurali e ovunque guardo c'è un po 'di teoria e qualche esempio banale con alcuni 0 e 1 come input. Mi chiedo: devo mettere solo un valore come valore di input per un neurone, o può essere un vettore di, diciamo, 3 valori (per esempio il colore RGB)?Reti neurali - valori di input
risposta
Può essere quello che vuoi, purché tu scriva di conseguenza la tua funzione interiore.
Gli esempi citati utilizzano [0; 1] come dominio, ma è possibile utilizzare R, R² o qualsiasi altra cosa si desideri, purché la funzione che si utilizza nei neuroni sia definita in questo dominio.
Nel tuo caso, è possibile definire le funzioni su R3 per consentire valori RGB per essere gestiti
Un esempio banale: usare (x1, y1, z1), (x2, y2, z2) -> (ax1 + x2, by1 + y2, cz1 + z2) come funzione per trasformare due colori in uno, ab e c come i tuoi coefs di apprendimento, che determinerai durante la fase di apprendimento.
Informazioni molto dettagliate (compresa la risposta alla tua domanda) sono disponibili on Wikipedia.
Quando si tratta di dati multidimensionali, credo che una rete neurale a due strati sia in grado di fornire un risultato migliore.
Nel tuo caso:
R[0..1] => (N1)----\
\
G[0..1] => (N2)-----(N4) => Result[0..1]
/
B[0..1] => (N3)----/
Come si può vedere, il neurone N4 in grado di gestire 3 voci.
L'intervallo [0..1] è una convenzione ma buona. In questo modo, puoi facilmente codificare una serie di classi di neuroni generici che possono assumere un numero arbitrario di voci (ho avuto classi template C++ con il numero di voci come parametro template personalmente). Quindi codifichi la logica dei tuoi neuroni una volta, poi giochi con la struttura della rete e/o le combinazioni di funzioni all'interno dei tuoi neuroni.
ma non è un dato tridimensionale .... è un valore per un neurone – agnieszka
il problema è che ho un insieme di pixel di un'immagine, ho alcune (3?) Immagini successive di una vista che me ne danno un po '(3?) Colori diversi di un pixel. ogni colore è composto da 3 valori. la domanda è - per continuare – agnieszka
la domanda è se io desing un neurone di input per ogni r e g eb per ogni pixel per ogni immagine o posso mettere un colore (r, g, valore b) come input per un neurone o forse 3 colori successivi? – agnieszka
Normalmente un singolo neurone prende come input più numeri reali e genera un numero reale, che in genere viene calcolato applicando la funzione sigmoide alla somma dei numeri reali (ridimensionati, quindi più o meno un offset costante).
Se si desidera inserire, ad esempio, due vettori RGB (2 x 3 real), è necessario decidere come si desidera combinare i valori. Se si aggiungono tutti gli elementi insieme e si applica la funzione sigmoid, equivale a ottenere sei real "piatti". D'altra parte, se si elaborano gli elementi R, quindi gli elementi G e gli elementi B, tutti singolarmente (ad esempio somma o sottrarre le coppie), si hanno in pratica tre neuroni indipendenti.
Quindi, in breve, no, un singolo neurone non accetta valori vettoriali.
quindi in una situazione che hai descritto hai 3 neuroni di input, ognuno dei quali riceve un valore costituito da tre valori, per esempio tre R? – agnieszka
Ah, lì dove in realtà solo due R nell'esempio sopra, ma sì, un modo sarebbe di dedicare un neurone per un elemento. –
Le risposte di cui sopra sono tecnicamente corretta, ma non spiegano la semplice verità: non c'è mai una situazione in cui avresti bisogno di dare un vettore di numeri per un singolo neurone.
Dal punto di vista pratico ciò è dovuto al fatto che (come una delle soluzioni precedenti ha mostrato) è possibile avere un neurone per ciascun numero in un vettore e quindi avere tutti questi input per un singolo neurone. Questo dovrebbe darti il comportamento desiderato dopo l'allenamento, poiché il secondo strato di neuroni può effettivamente utilizzare l'intero vettore.
Da un punto di vista matematico, esiste un teorema fondamentale della teoria della codifica che afferma che qualsiasi vettore di numeri può essere rappresentato come un numero singolo. Quindi, se davvero non vuoi uno strato extra di neuroni, puoi semplicemente codificare i valori RGB in un singolo numero e inserirli nel neurone. Tuttavia, questa funzione di codifica potrebbe rendere più difficile la maggior parte dei problemi di apprendimento, quindi dubito che questa soluzione varrebbe la pena nella maggior parte dei casi.
Riassumendo: le reti neurali artificiali vengono utilizzate senza dare un vettore a un'unità di input, ma a causa di ciò non perdono potenza di calcolo.
Utilizzare la lunghezza d'onda della luce normalizzata allo spettro visibile come ingresso.
Ci sono alcune equazioni approssimative sulla rete. Cercare la conversione da RGB a lunghezza d'onda o utilizzare il modello di colore HSL ed estrarre il componente Hue ed eventualmente usare anche Saturazione e Luminosità. Bene ...
Generalmente, l'input per un singolo neurone è un valore compreso tra 0 e 1. Tale convenzione non è solo per facilità di implementazione, ma perché la normalizzazione dei valori di input per lo stesso intervallo garantisce che ciascun input abbia pesi simili . (Se hai alcune immagini con un colore a 8 bit con valori di pixel tra 0 e 7 e alcune immagini con un colore a 16 bit con valori di pixel tra 0 e 255 probabilmente non vorrai favorire le immagini a 24 bit solo perché i valori numerici sono Analogamente, probabilmente vorrai che le tue immagini abbiano le stesse dimensioni.)
Per quanto riguarda l'uso di valori di pixel come input, è molto comune cercare di raccogliere una rappresentazione di livello superiore dell'immagine rispetto ai pixel (more info).). Ad esempio, dato un 5 x 5 (normalizzata) immagine scala di grigi:
[1 1 1 1 1]
[0 0 1 0 0]
[0 0 1 0 0]
[0 0 1 0 0]
[0 0 1 0 0]
Si potrebbe utilizzare una funzione le seguenti matrici per aiutare a scoprire caratteristiche orizzontali, verticali e diagonali delle immagini. Vedere python haar face detection per ulteriori informazioni.
[1 1] [0 0] [1 0] [0 1] [1 0], [0 1]
[0 0], [1 1], [1 0], [0 1], [0 1], [1 0]
Per costruire il vettore di ingresso, v, su questo, prendere la prima matrice 2x2 funzionalità e "applica" con la moltiplicazione elemento saggio alla prima posizione nell'immagine. L'applicazione,
[1 1] (the first feature matrix) to [1 1] (the first position in the image)
[0 0] [0 0]
si tradurrà in 2 perché 1 * 1 + 1 * 1 + 0 * 0 + 0 * 0 = 2. Append 2 al retro del vettore d'ingresso per questa immagine. Quindi sposta questa matrice delle funzioni nella posizione successiva, una a destra, e applicala nuovamente, aggiungendo il risultato al vettore di input. Ripetilo ripetutamente per ogni posizione della matrice delle caratteristiche e per ciascuna delle matrici delle caratteristiche. Questo costruirà il tuo vettore di input per una singola immagine. Assicurati di costruire i vettori nello stesso ordine per ogni immagine.
In questo caso l'immagine è in bianco e nero, ma con i valori RGB è possibile estendere l'algoritmo per eseguire lo stesso calcolo ma aggiungere 3 valori al vettore di input per ciascun pixel, uno per ciascun colore. Questo dovrebbe fornire un vettore di input per immagine e un singolo input per ciascun neurone. I vettori dovranno quindi essere normalizzati prima di passare attraverso la rete.
- 1. RBF reti neurali C#
- 2. Progetto reti neurali?
- 3. Programmazione reti neurali con Python?
- 4. Estrazione di feature da reti neurali
- 5. Reti neurali coattuzionali - Canali multipli
- 6. Reti neurali in Haskell - consiglio
- 7. Qualcuno può spiegare le reti neurali artificiali?
- 8. Domande su Q-Learning usando Reti Neurali
- 9. Problemi nella comprensione delle reti neurali
- 10. Reti neurali in MATLAB, pesi iniziali
- 11. Reti neurali involutive e immagini 3D
- 12. TensorFlow - Classificazione del testo tramite reti neurali
- 13. Mappe di saliency delle reti neurali (usando Keras)
- 14. Aggiungi bias a strati di reti neurali Lasagne
- 15. Implementazione di una funzione di attivazione softmax per reti neurali
- 16. Le reti neurali per il rilevamento e-mail di spam
- 17. Come si ottengono/definiscono i filtri nelle reti neurali convoluzionali?
- 18. Calcolo di matrice Jacobiana per reti neurali artificiali
- 19. Il nodo bias è necessario in reti neurali molto grandi?
- 20. Come utilizzare le reti neurali per risolvere soluzioni "soft"?
- 21. CPU vs GPU per (conv) Calcolo delle reti neurali
- 22. Esiste un formato comune per le reti neurali
- 23. In che modo il pre-allenamento migliora la classificazione nelle reti neurali?
- 24. Come utilizzare il layer di incorporamento per reti neurali ricorrenti (RNN) in Keras
- 25. Problemi con reti di credenziali profonde input reali (di RBM)
- 26. Le reti neurali non riescono a capire le trasformate di Fourier?
- 27. Tessaract OCR utilizza le reti neurali come meccanismo di allenamento predefinito
- 28. Reti neurali: esempio di open source minimo con dati esaurienti sull'allenamento?
- 29. Reti neurali e elaborazione di immagini per sparare ai caterpillars con laser
- 30. Reti di ordinamento standard per piccoli valori di n
ma se un set di dati rimane in una relazione con un altro set di dati dovrebbero essere forniti a diversi neuroni, non dovrebbero? o può essere l'input di un vettore? – agnieszka
sì, può essere un input di un vettore; R3 significa un vettore di 3 membri (beh, banalmente parlando) – Brann
beh sì, ho capito: D voglio dire se hai 3 colori di un pixel in 3 immagini successive e sai che le differenze tra questi colori influenzano il risultato se dovessi avere 3 neuroni per questi 3 colori o un neurone per un input contenente questi 3 colori? o scelgo? – agnieszka