web-dev-qa-db-ja.com

TypeError:リストのテンソルが 'ConcatV2'の 'values'に渡されましたOpにはすべてが一致しないタイプ[bool、float32]があります

私はこのリンクで見つけたLSTMを使用してエンティティ認識のためにノートブックを再現しようとしています: https://medium.com/@rohit.sharma_7010/a-complete-tutorial-for-named-entity-recognition -and-extraction-in-natural-language-processing-71322b6fb09

モデルをトレーニングしようとすると、理解できないエラーが発生します(テンソルフローはまったく新しいです)。特にエラーのあるコードの部分はこれです:

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()

エラーは行にあります

out = crf(model)

私が得るエラーはこれです:

TypeError: Tensors in list passed to 'values' of 'ConcatV2' Op have types [bool, float32] that don't all match.

誰かが説明してくれますか?

4
Paolopast

今日もこの問題に遭遇しました。私にとってうまくいったのは、埋め込みレイヤーからmask_zero=Trueを削除することでした。残念ながら、なぜこれが役立つのかわかりません。

2
moejoe

keras_contribcrfレイヤーを使用して埋め込みレイヤーでマスキングを使用すると、問題が発生します: https://github.com/keras-team/ keras-contrib/issues/498

修正は、このプルリクエストで行われるように、K.zeros_likeのマスクに対してkeras_contrib/layers/crf.pyのdtypeを強制することです。 https://github.com/ashutoshsingh0223/keras-contrib/pull/1

またはkeras_contribマスターブランチから直接インストールします。

0
MikeL