Sto cercando di formare una rete neurale artificiale con due strati convoluzionali (c1, c2) e due strati nascosti (c1, c2). Sto usando l'approccio standard di backpropagation. Nel passaggio indietro calcolo il termine di errore di un livello (delta) in base all'errore del livello precedente, ai pesi del livello precedente e al gradiente di attivazione rispetto alla funzione di attivazione del livello corrente. Più specificamente, il delta del livello l è simile al seguente:
delta(l) = (w(l+1)' * delta(l+1)) * grad_f_a(l)
Sono in grado di calcolare il gradiente di c2, che si collega in un livello normale. Moltiplico semplicemente i pesi di h1 con il suo delta. Quindi rimodulo quella matrice nella forma dell'output di c2, la moltiplico per il gradiente della funzione di attivazione e ho finito.
Ora ho un termine delta di c2 - che è una matrice 4D di dimensioni (featureMapSize, featureMapSize, filterNum, patternNum). Inoltre ho i pesi di c2, che sono una matrice 3D di dimensioni (filterSize, filterSize, filterNum).
Con questi due termini e il gradiente dell'attivazione di c1 voglio calcolare il delta di c1.
Per farla breve:
Dato il termine delta di un livello convoluzionale precedente e i pesi di quel livello, come posso calcolare il termine delta di un livello convoluzionale?