Lors de la création d'un modèle séquentiel dans Keras, je comprends que vous fournissez la forme d'entrée dans la première couche. Cette forme d'entrée fait-elle alors une couche d'entrée implicite?
Par exemple, le modèle ci-dessous spécifie explicitement 2 couches denses, mais s'agit-il en fait d'un modèle à 3 couches composé d'une couche d'entrée impliquée par la forme d'entrée, d'une couche dense cachée avec 32 neurones, puis d'une couche de sortie avec 10 sorties possibles?
model = Sequential([
Dense(32, input_shape=(784,)),
Activation('relu'),
Dense(10),
Activation('softmax'),
])
Eh bien, en fait c'est une couche d'entrée implicite en effet, c'est-à-dire que votre modèle est un exemple d'un "bon vieux" réseau neuronal à trois couches - entrée, caché et sortie. Ceci est plus explicitement visible dans l'API fonctionnelle Keras (vérifiez le exemple dans les documents), dans lequel votre modèle serait écrit comme suit:
inputs = Input(shape=(784,)) # input layer
x = Dense(32, activation='relu')(inputs) # hidden layer
outputs = Dense(10, activation='softmax')(x) # output layer
model = Model(inputs, outputs)
En fait, cette couche d'entrée implicite est la raison pour laquelle vous devez inclure un input_shape
argument uniquement dans la première couche (explicite) du modèle dans l'API séquentielle - dans les couches suivantes, la forme d'entrée est déduite de la sortie des précédentes (voir commentaires dans le code source de core.py
).
Vous pouvez également trouver le documentation sur tf.contrib.keras.layers.Input
éclairant.
L'API fonctionnelle Keras clarifie en effet les choses et est plus explicite du point de vue de la programmation.
Il devient déroutant d'appeler l'entrée une couche d'entrée implicite (vous commencez normalement à penser à une couche avec une fonction mathématique), si nous l'appelons simplement entrée? (vs les couches suivantes qui se comportent comme un module de programmation ou une fonction qui peut prendre des entrées, et nous n'appelons jamais ces entrées un autre module, juste des entrées)
Ensuite, les deux couches denses avec des fonctions d'activation et et des poids sont à juste titre une couche
Le concept de NODES a tendance à être beaucoup plus clair mais l'abstraction en couches a tendance à brouiller nos esprits.
J'ai commencé mon apprentissage de la programmation au niveau du nœud, puis je suis assez confus au niveau de la couche en raison du changement de terminologie.
Votre cerveau, s'il est intégré à d'autres concepts, a tendance à confondre lorsque des choses similaires sont nommées différemment au niveau de la structure.