Je travaille sur un problème d'étiquetage de phrases. Je l'ai fait l'enrobage et rembourrage par moi-même et mes entrées ressemble:Etiquetage de séquence dans Keras
X_i = [[0,1,1,0,2,3...], [0,1,1,0,2,3...], ..., [0,0,0,0,0...], [0,0,0,0,0...], ....]
Pour chaque mot phrase que je veux prédire l'une des quatre classes, donc ma sortie désirée devrait ressembler à:
Y_i = [[1,0,0,0], [0,0,1,0], [0,1,0,0], ...]
Mon architecture simple réseau est:
model = Sequential()
model.add(LSTM(input_shape = (emb,),input_dim=emb, output_dim=hidden, return_sequences=True))
model.add(TimeDistributedDense(output_dim=4))
model.add(Activation('softmax'))
model.compile(loss='binary_crossentropy', optimizer='adam')
model.fit(X_train, Y_train, batch_size=32, nb_epoch=3, validation_data=(X_test, Y_test), verbose=1, show_accuracy=True)
Il montre environ 95% tandis que la formation, mais quand je suis en train de prévoir de nouvelles phrases en utilisant les résultats du modèle sont formés vraiment mauvais. On dirait que le modèle vient d'apprendre quelques classes pour les premiers mots et le montre à chaque fois. Je pense que le problème peut est:
Écrit par moi-même (zéro padding vecteurs à la fin de la phrase), peut-il faire de l'apprentissage pire?
que je devrais essayer d'apprendre des phrases de différentes longueurs, sans rembourrage (si oui, pouvez-vous me aider comment former ce genre d'un modèle Keras?)
objectif incorrect de l'apprentissage, mais j'essayé moyenne erreur au carré, entropie croisée binaire et autres, ça ne change pas. Quelque chose avec
TimeDistributedDense
etsoftmax
, je pense, que j'ai comment cela fonctionne, mais toujours pas sûr à 100%.
Je serai heureux de voir toute allusion ou aide concernant ce problème, merci!
Avez-vous essayé abandon sur votre lstms? aussi, avez-vous essayé la normalisation par lots de lstm – Julius
comme vous avez le jeu de formation très élevé apprenez le taux, vous pourriez faire le haut abandon pour faire la régularisation – Julius
et alors peut-être essayer plusieurs couches de lstm – Julius