Désolé, en tant que débutant, je veux poser une question simple. Pourquoi je ne trouve aucune information sur l'entrée, c'est-à-dire keras.layers.Input dans la documentation: https://keras.io/
Cette documentation est vraiment difficile à consulter lorsque vous n'êtes pas habitué à Keras.
Mais il existe deux approches pour construire des modèles de keras:
Sequential
Model
La couche Input
n'est pas utilisée avec le modèle Sequential
, mais uniquement avec Model
.
Il n’ya probablement pas de documentation claire, car la couche Input
ne fait absolument rien à part définir la forme des données d’entrée dans votre modèle. (En fait, cela crée un "tenseur" que vous pouvez utiliser comme entrée dans d'autres couches).
Imaginez que vous créez un modèle prenant des lots avec des données MNIST, qui ont des images de 28 x 28 pixels. Votre forme en entrée est alors (28,28)
(voir *
).
Lors de la création de votre modèle, vous utilisez Input
uniquement pour définir ce qui suit:
#inp will be a tensor with shape (?, 28, 28)
inp = Input((28,28))
Les couches suivantes utiliseront ensuite cette entrée:
x = SomeKerasLayer(blablabla)(inp)
x = SomeOtherLayer(blablabla)(x)
output = TheLastLayer(balblabla)(x)
Et lorsque vous créez le modèle, vous définissez le chemin que suivront les données, qui dans ce cas va de l'entrée à la sortie:
model = Model(inp,output)
Avec l'API Model
, il est également possible de créer des ramifications, des entrées multiples et des sorties multiples, des branches, etc.
Si vous avez plusieurs entrées, vous devez créer plusieurs couches Input
.
Voir ici des exemples plus avancés avec des couches réelles: https://keras.io/getting-started/functional-api-guide/
*
- Ce n'est pas une règle. Selon la manière dont vous formatez vos données d'entrée, cette forme peut changer. Certains modèles préfèrent ne pas se soucier des informations 2D et utiliser une image aplatie de forme (784,)
. Les modèles qui utilisent des couches convolutives façonnent souvent les données d'entrée en (28,28,1)
, une image avec un canal. (En général, les images ont 3 canaux, RVB).
Input
Le code de la méthode Input
est défini ici (22 décembre - 2017)
Arguments possibles:
K.variable()
. name
, dtype
et sparse
.La plupart des choses ont été résumées par la réponse ci-dessus. Mais comme mentionné dans le commentaire, je pense que le tf.contrib.keras
contient des documents sur keras
. This link contient la documentation pour le même.
Comme indiqué dans la réponse acceptée, Input
peut être utilisé avec model
pour désigner le tenseur. En fait, il retourne un tenseur. D'après ce que je comprends, il ressemble un peu à tf.placeholder
car il nous permet de définir le modèle uniquement en fonction de l'objet Input
et de l'ajuster ultérieurement. Voici l'exemple des docs tensorflow.
# this is a logistic regression in Keras
x = Input(shape=(32,))
y = Dense(16, activation='softmax')(x)
model = Model(x, y)
On peut voir ici comment l'utilisation de Input
est quelque peu similaire à celle de tf.placeholder