Comment faire pour modifier l'entrée de la forme dans le modèle Séquentiel dans Keras
J'ai un séquentielle modèle que j'ai construit en Keras.
J'essaie de trouver comment changer la forme de l'entrée. Dans l'exemple suivant
model = Sequential()
model.add(Dense(32, input_shape=(500,)))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
disons que j'ai envie de construire un nouveau modèle avec des entrées de la forme, conceptuel, cela devrait ressembler à ceci:
model1 = model
model1.layers[0] = Dense(32, input_shape=(250,))
est-il un moyen de modifier le modèle d'entrée de forme?
OriginalL'auteur itamar kanter | 2017-02-12
Vous devez vous connecter pour publier un commentaire.
Pensez à ce que la modification de la forme d'entrée dans cette situation.
De votre premier modèle
A une couche dense que c'est vraiment un 500x32 de la matrice.
Si vous avez changé d'entrée de 250 éléments, vos couches de la matrice d'entrée et de dimension l'inadéquation.
Si, toutefois, ce que vous essayiez de faire, c'est de réutiliser votre dernière couche est formée des paramètres de votre première 500 élément d'entrée du modèle, vous pourriez obtenir ces poids par get_weights. Ensuite, vous pouvez reconstruire un nouveau modèle et de définir des valeurs dans le nouveau modèle avec set_weights.
Gardez à l'esprit que model1 la première couche (aka model1.les couches[0]) serait encore non formés
Je ne pense pas. Comme je l'ai dit, les dimensions ne correspondent pas. Si vous voulez savoir comment votre modèle n'partielle des entrées, je suggère la formation d'un modèle différent uniquement avec vos partielle des entrées. Ce que vous pourriez faire si vous voulez vraiment utiliser le même modèle pour les deux situations ayant des tailles différentes entrées serait d'utiliser un RNN au lieu d'un MLP.
OriginalL'auteur maz
Peu liés, donc j'espère que quelqu'un va trouver cela utile: Si vous disposez d'un modèle existant lorsque l'entrée est un espace réservé qui ressemble (None, None, None, 3) par exemple, vous pouvez charger le modèle, remplacer la première couche avec un concrètement en forme d'entrée. La Transformation de ce genre est très utile lorsque, par exemple, vous voulez utiliser votre modèle dans iOS CoreML (Dans mon cas, l'entrée du modèle est un MLMultiArray au lieu de CVPixelBuffer, et le modèle de compilation a échoué)
OriginalL'auteur ohad serfaty
Voici une autre solution sans la définition de chaque couche du modèle à partir de zéro. Pour moi, l'essentiel était d'utiliser "_layers" au lieu de "couches". Ce dernier ne semble de retour une copie.
OriginalL'auteur gebbissimo