2017-10-04 3 views
1

Lors de la création d'un modèle Sequential 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 Dense, mais est-ce réellement un modèle avec 3 couches composées d'une couche d'entrée impliquée par la forme d'entrée, une couche dense cachée avec 32 neurones, puis une couche de sortie avec 10 sorties possibles?Keras Couche d'entrée de modèle séquentiel

model = Sequential([ 
    Dense(32, input_shape=(784,)), 
    Activation('relu'), 
    Dense(10), 
    Activation('softmax'), 
]) 

Répondre

4

Eh bien, il fait est une couche d'entrée implicite en effet, à savoir votre modèle est un exemple d'un réseau de neurones « bon vieux » avec trois couches - entrée, cachée, et de sortie. Ceci est plus explicitement visible dans la Keras API fonctionnelle (vérifiez la example dans les docs), dans lequel votre modèle serait écrit:

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 argument input_shape 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 comments dans le code source de core.py). Vous pouvez également trouver le sur tf.contrib.keras.layers.Input éclaircissement.