J'essaye de reproduire le cahier pour la reconnaissance d'entités utilisant LSTM que j'ai trouvé sur ce lien: https://medium.com/@rohit.sharma_7010/a-complete-tutorial-for-named-entity-recognition -et-extraction-en-traitement-du-langage-naturel-71322b6fb09
Lorsque j'essaie d'entraîner le modèle, j'obtiens une erreur que je ne peux pas comprendre (je suis assez nouveau dans tensorflow). En particulier, la partie de code avec l'erreur est celle-ci:
from keras.models import Model, Input
from keras.layers import LSTM, Embedding, Dense, TimeDistributed, Dropout, Bidirectional
from keras_contrib.layers import CRF
# Model definition
input = Input(shape=(MAX_LEN,))
model = Embedding(input_dim=n_words+2, output_dim=EMBEDDING, # n_words + 2 (PAD & UNK)
input_length=MAX_LEN, mask_zero=True)(input) # default: 20-dim embedding
model = Bidirectional(LSTM(units=50, return_sequences=True,
recurrent_dropout=0.1))(model) # variational biLSTM
model = TimeDistributed(Dense(50, activation="relu"))(model) # a dense layer as suggested by neuralNer
crf = CRF(n_tags+1) # CRF layer, n_tags+1(PAD)
print(model)
out = crf(model) # output
model = Model(input, out)
model.compile(optimizer="rmsprop", loss=crf.loss_function, metrics=[crf.accuracy])
model.summary()
L'erreur est sur la ligne
out = crf(model)
L'erreur que j'obtiens est la suivante:
TypeError: Tensors in list passed to 'values' of 'ConcatV2' Op have types [bool, float32] that don't all match.
Quelqu'un peut-il me donner une explication?
Je suis également tombé sur ce problème aujourd'hui. ce qui a fonctionné pour moi a été de supprimer mask_zero=True
à partir du calque d'intégration. malheureusement, je ne sais pas pourquoi cela aide.
Le problème apparaît lorsque vous utilisez le masquage dans la couche d'intégration avec keras_contrib couche crf: https://github.com/keras-team/ keras-contrib/issues/498
Le correctif consiste à appliquer dtype dans K.zeros_like
pour masque dans keras_contrib/layers/crf.py
comme cela est fait dans cette pull request: https://github.com/ashutoshsingh0223/keras-contrib/pull/1
ou installez directement à partir de la branche principale keras_contrib .