Rete Neurale Convoluzionale in C# DA ZERO
HTML-код
- Опубликовано: 21 авг 2024
- Terzo video sulle reti convoluzionali dove scriviamo una rete in c# completamente da zero!
Solution di visual studio: drive.google.c...
Articolo sulla backpropagation: victorzhou.com...
Rete interattiva: www.cs.ryerson...
Video precedenti della serie:
- Cos'è la convoluzione: • LA CONVOLUZIONE (Reti ...
- Dopo la convoluzione: • DOPO LA CONVOLUZIONE (...
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
Se ti piace questo video, commenta e condividi, ma soprattutto iscriviti perché seguiranno altri video su reti neurali sempre più potenti ed elaborate!
Per qualsiasi domanda, chiedete pure nei commenti :)
Seguimi anche su facebook: / willyrs89
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
Video che consiglio di vedere prima di questo:
Introduzione alla IA: • Cos'è l'Intelligenza A...
Cos'è una rete neurale?: • Cos'è una RETE NEURALE?
La backpropagation: • La Backpropagation (Ad...
Rete neurale feed forward da zero in c#: • Rete Neurale Feed-Forw...
Ma ci sono anche altri video su altri tipi di IA che ti aspettano, nella mia playlist sull'intelligenza artificiale: • Intelligenza Artificia...
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
Hai voglia di qualcosa di più soft? Allora ecco i miei video dedicati alla stampa 3d: • Stampa 3D
Ben spiegato complimenti
Grazie per queste spiegazioni!!
Una domanda.
Hai un motivo in particolare per cui programmare in c# piuttosto che Python?
Grazie e aspetto video su reti più avanzate.
Sei un grande!
Ho usato c# perché ai tempi lo usavo al lavoro e mi veniva più comodo! Python é utile per usare librerie di AI già pronte, scrivendo da zero un linguaggio vale l'altro
@@WiLLyRS89 si certo, mi chiedevo se avevi un motivo in particolare e mi hai risposto, grazie e complimenti per i video ed il canale.
Attendevo con ansia questo momento! Finalmente un po' di azione. Codice chiaro e informativo, dovresti iscriverti all'università e fare la magistrale secondo me
Ciao, complimenti per i video, sono interessantissimi. Io vengo da altre discipline ma sono un appassionato e volevo fare qualche domanda:
1 - Hai parlato nei video precedenti di layer di convoluzione e layer di pooling ma non mi è chiarissima la differenza. In sostanza la differenza tra i due è semplicemente il fatto che nel primo si fa una sorta di prodotto tensoriale mentre nel secondo si eliminano i pixel prendendo semplicemente il massimo di tutte le matrici 2x2 pixel ?
2 - Sarebbe possibile creare uno strumento OCR ( riconoscimento del testo da una stampa)? se si, sorgerebbe qualche problema se sono presenti font diversi o un buon addestramento risolverebbe qualsiasi criticità?
3 - La rete che hai costruito permette di riconoscere la lettera all'interno del quadratino, ma nel caso di una parola , una frase o un testo intero come fanno le reti a distinguere lettera per lettera ? In passato ho giocato un po con la libreria di YOLO, e li dicevano che "l'occhio" dell' IA scorrefa l'immagine da sinistra e destra e dal basso verso l'alto, ma non riesco a spiegarmi come faccia a capire dove finisce un oggetto e dove ne comincia un altro.
Complimenti ancora!
Alberto Compagnone
Grazie mille! 1) si, il layer di convoluzione serve per evidenziare le feature dell'immagine, mentre quello di pooling semplicemente la rimpicciolisce 2) certo! Anzi, credo proprio che la maggior parte dei sistemi OCR siano fatti cosi! C'è sempre un dataset fisso per addestrare, quindi più i font di allenamento sono diversi minore sarà la precisione 3) dipende dal formato, magari si aspetta le immagini in un particolare formato e sa già come scorrerla, altrimenti (nel caso ad esempio di facebook che deve cercare dove sono le facce delle persone), c'è prima una rete neurale che cerca le coordinate delle facce e poi una convoluzione che le riconosce! Non saprei dirti così su due piedi la struttura della prima però :)
Ciao , scusa il disturbo. Sto lavorando ad un progetto di tesi analizzando la rete VGG16, ho compreso la sua struttura e come effettua la previsione, tuttavia ho alcuni dubbi. La prima è :la convoluzione effettuata è costituita e calcolata da matrici 3x3 dell'input che si moltiplicano con i 64 filtri 3x3 del block1_conv1 per ognuno dei 3 canali e poi ognuno si somma con uno dei 64 bias? Se sì, tra il layer block1_conv1 e block1_conv2, si parte dal risultato della matrice di convoluzione o dai kernel 3x3 che sono stati usati prima? La seconda domanda riguarda la backpropagation, dovrei vedere e calcolare il field of view di uno specifico neurone che si trova in un layer, però non ho ben capito come capire quali filtri del layer prima lo hanno influenzato e quali no, come faccio a calcolarlo e saperlo? Avevo pensato di azzerare per il layer_target tutti i filtri e neuroni che non siano il neurone di cui voglio sapere il fov, ma poi come capisco quale filtro è attivo o meno e quali tra quelli attivi lo hanno effettivamente influenzato e stanno nel suo percorso? Non so se sono stato chiaro, mi sarebbe molto utile se riesci a darmi qualche spunto o spiegazione
Conv2 parte sicuramente dal risultato del layer precedente (di solito un pool), per il field of view non saprei, dipende come sono connessi i layer interni, credo che possa variare di rete in rete
Ciao! Sono programmatore c# e sono molto interessato a imparare a usare le reti neurali. Ti chiedo se divessi fare una rete per la analisi del movimento del prezzo di un titolo quale tipo di rete sarebbe più adatta? Perche penso che in input potrei darei tutte le informazioni disponibili delle candele e come output un valore binario cioè sale o scende oppure una figura di analisi tecnica che statisticamente si forma . Cosa pensi si possa mettere com output e che tipo di rete sarebbe adatta?. Potresti fare un videi su questo argomento... Sarebbe molto seguito😀 complimenti per le ottime spiegazioni.
Per questi problemi di solito si usa una rete neurale come questa, basta che non metti la sigmoide al neurone di output e così ottieni il numero "puro", cioè direttamente il prezzo. In termine tecnici è un problema di regression invece che di classificazione come quella del video
Scusa quella del video è convoluzionale, intendevo quella Feed forward del video precedente!
Ciao vorrei un aiuto perchè sto implementando una rete con ML per imparare a classificare immagini (come esempio) e sto cercando di caricare il modello resnet e di customizzare l'allenamento. potremmo contattarci in privato per una consulenza professionale? grazie!
GRANDISSIMO!!! GRAZIE! il link della rete interattiva non funziona.....riesci ad aggiornarla??
Purtroppo no, non era un mio link e l'hanno cancellato :/ ora lo cancello dalla descrizione, grazie!
@@WiLLyRS89 grazie, perché cambiando le epoche massime a 3, ne fa sempre 10??
@@davideangrilli6138 cioè, hai preso il mio codice e cos'hai modificato?
@@WiLLyRS89 tutto ok, grazie. Sei un grande!
domanda, perchè prendere un lunghissimo array? non sarebbe più efficiente lavorando in parallelo suddividendo lo spazio e poi solo in fase finale ricomporlo?
x esempio 28x28 si potrebbe dividere lo spazio per 7 e così avrei un array di 4 . quindi otterrei 4_a, 4_b, 4_c fino ad arrivare a 7, ed in parallelo avrei nella riga successiva al 4x4, 4_a1, 4_b2 poi avrei 4_a2, 4b2 etc... fino ad arrivare a 7 etc... del peso di 1byte ciascuno. in pratica mappo la mappa
o mi sono perso qualcosa io? oppure questo computazionalmente pesa di più nel processo di parallelizzazione?
La convoluzione si può assolutamente parallelizzare! Si usa la GPU e il procedimento è abbastanza complicato, però si fa! Farlo coi thread con la CPU non cambia di molto rispetto a farlo dritto, perché non è ottimizzata per queste operazioni