Nel tutorial MNist di TensorFlow di Google, viene mostrato un calcolo in cui un passo equivale a moltiplicare una matrice per un vettore. Google mostra per prima cosa un'immagine in cui ogni moltiplicazione e aggiunta numerica che andrebbero ad eseguire il calcolo è scritta per esteso. Successivamente, mostrano un'immagine in cui viene invece espressa come una moltiplicazione di matrice, sostenendo che questa versione del calcolo è, o almeno potrebbe essere, più veloce:
If we write that out as equations, we get:
We can "vectorize" this procedure, turning it into a matrix multiplication and vector addition. This is helpful for computational efficiency. (It's also a useful way to think.)
So che equazioni come questa sono solitamente scritte nel formato di moltiplicazione della matrice da operatori di apprendimento automatico e possono ovviamente vedere dei vantaggi nel fare ciò dal punto di vista della precisione del codice o della comprensione della matematica. Quello che non capisco è l'affermazione di Google che la conversione dalla forma lunga alla forma matrice "è utile per l'efficienza computazionale"
Quando, perché e in che modo sarebbe possibile ottenere miglioramenti delle prestazioni nel software esprimendo i calcoli come moltiplicazioni di matrice? Se dovessi calcolare la moltiplicazione della matrice nella seconda immagine (basata su matrice) io stesso, come un essere umano, lo farei facendo in sequenza ciascuno dei calcoli distinti mostrati nella prima immagine (scalare). Per me, non sono altro che due notazioni per la stessa sequenza di calcoli. Perché è diverso per il mio computer? Perché un computer è in grado di eseguire il calcolo della matrice più rapidamente di uno scalare?