Altifigence Academy

10 / 24 · Concetto

im2col e moltiplicazione di matrici

Per H=W=4,C=1 e un kernel 3×3 senza riempimento, calcola elementi di ingresso originali, P,K ed elementi delle patch espanse.

Riscrivi l'operazione

im2col appiattisce ogni finestra di ingresso in un vettore per la moltiplicazione di matrici. Disponiamo una patch in ogni riga. La matrice A ha P×K elementi, con P=HoWo e K=CRS. I pesi appiattiti formano le colonne della matrice B, di forma K×M. Il prodotto AB ha forma P×M. Altre convenzioni dispongono le patch in colonne, quindi stabilisci gli assi anziché dedurli dal nome.

Puoi materializzare l'intera matrice di patch oppure generare patch su richiesta. Entrambi possono produrre gli stessi numeri con memoria e banda differenti. Disporre di un motore di moltiplicazione di matrici non richiede di scrivere un'intera matrice espansa nella memoria esterna.

Matrice svolta

Per [1,2,3;4,5,6;7,8,9] e finestre 2×2, A ha righe [1,2,4,5], [2,3,5,6], [4,5,7,8] e [5,6,8,9]. Il kernel [1,2;3,4] dà la colonna dei pesi [1,2,3,4]. I quattro prodotti scalari sono 37,47,67,77. Quindi 4×4 moltiplicato per 4×1 dà 4×1, che viene ricomposto in un'uscita 2×2.

L'ingresso originale contiene nove elementi; la matrice espansa ne contiene sedici. Il valore centrale cinque appare quattro volte, mentre il valore d'angolo uno appare una volta. Il riuso spaziale diventa duplicazione in una rappresentazione materializzata. Un vettore di pesi viene riutilizzato per tutte e quattro le patch. Calcola P×K e confrontalo con C×H×W prima di assegnare memoria. Una regione di uscita più grande può rendere sostanziale la duplicazione.

Con più canali, appiattisci patch e pesi nello stesso ordine c,r,s. Una patch 1×1 a due canali è [x0,x1]; invertire soltanto i canali dei pesi cambia il risultato. Parti da valori di canale asimmetrici. La convoluzione a gruppi forma vettori separati per gruppo anziché includere indiscriminatamente ogni canale di ingresso.

La corrispondenza con un modello diretto verifica i valori aritmetici, non i trasferimenti fisici di memoria o il funzionamento simultaneo dei PE. Il capitolo successivo genera finestre equivalenti da un flusso; la successiva suddivisione in blocchi evita di memorizzare un intero tensore espanso. Registra dimensioni e duplicazione della matrice intermedia oltre ai valori di uscita affinché i costi dell'associazione rimangano visibili.

Prova tu

Per H=W=4,C=1 e un kernel 3×3 senza riempimento, calcola elementi di ingresso originali, P,K ed elementi delle patch espanse.

Leggi la spiegazione

L'ingresso ha sedici elementi. L'uscita è 2×2, quindi P=4 e K=9. Una matrice completa di patch ha 36 elementi. Le finestre su richiesta possono evitare di memorizzarli tutti e 36.

La scelta vale per questo browser. Puoi modificarla in qualsiasi momento dal piè di pagina.