J'ai un modèle de réseau formé à l'aide de la formation par lots. Une fois qu'il est formé, je veux prédire la sortie pour un seul exemple.Utilisation de Keras LSTM pour prédire un seul exemple après l'utilisation de l'apprentissage par lots
Voici mon code modèle:
model = Sequential()
model.add(Dense(32, batch_input_shape=(5, 1, 1)))
model.add(LSTM(16, stateful=True))
model.add(Dense(1, activation='linear'))
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
J'ai une séquence d'entrées simples à sorties simples. Je fais un code de test pour mapper les caractères aux caractères suivants (A-> B, B-> C, etc.).
I créer des données d'entrée de forme (15,1,1) et une donnée de sortie de forme (15, 1) et appeler la fonction:
model.fit(x, y, nb_epoch=epochs, batch_size=5, shuffle=False, verbose=0)
Les trains miniatures, et maintenant je veux prendre un seul caractère et prédire le caractère suivant (entrée A, il prédit B). Je crée une entrée de forme (1, 1, 1) et appelle:
pred = model.predict(x, batch_size=1, verbose=0)
Cela donne:
ValueError: Shape mismatch: x has 5 rows but z has 1 rows
j'ai vu une solution était d'ajouter "données factices" à votre prédire les valeurs, donc la forme d'entrée pour la prédiction serait (5,1,1) avec les données [x 0 0 0 0] et vous prendriez simplement le premier élément de la sortie comme valeur. Cependant, cela semble inefficace quand il s'agit de gros lots.
J'ai aussi essayé d'enlever la taille du lot de la création de modèle, mais je reçu le message suivant:
ValueError: If a RNN is stateful, a complete input_shape must be provided (including batch size).
Y at-il une autre façon? Merci pour l'aide.