Python >> Tutoriel Python >  >> Python Tag >> Keras

Keras séquentiel sans fournir de forme d'entrée

Belle observation - je pense que la documentation de Keras devrait être mise à jour. Lorsque la forme d'entrée n'est pas fournie, Keras la déduit de l'argument x de Model.fit et alors seulement il construit le modèle entier. Concrètement, voici ce qui se passe :

  1. Lors de l'ajout de calques Keras dans le Sequential modèle, puisque l'argument input_shape (et, par extension, batch_input_shape ) n'est jamais défini, l'attribut Model.inputs reste None (voir Sequential.add ).
  2. Ensuite, en Model.fit , ils vérifient si Model.inputs a été défini (voir Model.fit et Model._standardize_user_data ) et, si ce n'est pas le cas, ils déduisent la forme d'entrée à partir du tableau d'entrée fourni.
  3. Enfin, en Model._set_inputs , ils construisent le modèle entier avec le input_shape déduit (voir Model._set_inputs ).

Cela peut être vérifié en imprimant certains poids (par exemple print(model.layers[0].get_weights()) ) avant de monter le modèle. Vous verrez que, lorsque l'argument input_shape ou batch_input_shape n'est pas fourni à la première couche du modèle, le tableau de poids est vide car le modèle n'a pas encore été construit.