2016-12-06 1 views
0

Si je comprends bien, je peux transformer un 3-Layered NN en DL NN en ajoutant un RelU après the hidden layer, puis en répétant le hidden layer + RelUallant d'un à 3 couches NN Deep apprentissage avec Relu

Je suis avoir de la difficulté à visualiser comment la dimensionnalité va fonctionner. J'ai maintenant ce qui suit d'un small library je mets ensemble pour que je puisse couler dans les concepts

M = 784 # 28 x 28 pixels 
N = 512 # hidden neurons 
P = 10 # number of possible classes 

w1 = np.random.normal(0.0, pow(10, -0.5), (M, N)) 
w2 = np.random.normal(0.0, pow(10, -0.5), (N, P)) 

b1 = np.random.normal(0.0, pow(10, -0.5), (N)) 
b2 = np.random.normal(0.0, pow(10, -0.5), (P)) 

x = Input(w1, b1) 
h = Hidden(x, w2, b2) 
g = Softmax(h) 
cost = CrossEntropy(g) # numpy.mean(CrossEntropy) over BATCH SIZE 

train_data() 

Mais je veux aller à

x = Input(w1, b1) 
h = Hidden(x, w2, b2) 
r = ReLU(h) 
h2 = Hidden(r, ??, ??) # 1 
r2 = ReLU(h2)   # 2 
.. <repeat 1 and 2> 
g = Softmax(h) 
cost = CrossEntropy(g) # numpy.mean(CrossEntropy) over BATCH SIZE 

train_data() 

Related article I a writing about this

Répondre

0

Si j'ai bien compris, je peux transformer un NN à 3 couches en un DL NN en ajoutant un RelU après le calque caché, puis en répétant le calque caché + RelU

L'apprentissage profond est à peu près un mot à la mode. Il peut s'agir de réseaux avec n'importe quoi, à partir de 3 couches d'apprentissage jusqu'à au moins 16. Cela dépend de l'auteur/lorsque vous vouliez savoir ce que signifie «profond». Par exemple, le deep residual learning paper a placé la barre beaucoup plus haut à plusieurs centaines de couches.

Ce qui est important, c'est que vous avez au moins une couche cachée avec une non-linéarité. Un réseau avec une couche d'entrée, une couche cachée et une couche de sortie (donc deux couches d'apprentissage). Les non-linéarités (fonction logistique, tanh, ReLU, ...) rendent les réseaux neuronaux si puissants.

Pour les dimensions: Ce sont des multiplications matricielles/additions vectorielles. Votre entrée est de dimension (1, M) et est mutlipliée avec une matrice de dimension (M, N). Le résultat est de dimension (1, N). La matrice suivante à multiplier doit être de dimension (N, peu importe). Vous devez donc vous assurer que les matrices voisines ont des dimensions ajustées. Juste calcul 101.