web-dev-qa-db-fra.com

TypeError: les tenseurs de la liste sont passés aux 'valeurs' de 'ConcatV2' Op ont des types [bool, float32] qui ne correspondent pas tous

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?

4
Paolopast

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.

2
moejoe

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 .

0
MikeL