我试图同时实现字符和单词lstm,但我一直收到这个错误:
InvalidArgumentError: indices[310,0] = 119 is not in [0, 119)
[[node model_3/time_distributed_12/embedding_7/embedding_lookup (defined at <ipython-input-64-51f6ad92087d>:3) ]] [Op:__inference_train_function_28785]
Errors may have originated from an input operation.
Input Source operations connected to node model_3/time_distributed_12/embedding_7/embedding_lookup:
model_3/time_distributed_12/embedding_7/embedding_lookup/24179这是我的模型:
# input and embedding for words
word_in = Input(shape=(max_len,))
emb_word = embedding_layer(word_in)
# input and embeddings for characters
char_in = Input(shape=(max_len, max_len_char,))
emb_char = Embedding(input_dim=n_chars + 1, output_dim=20,
input_length=max_len_char, mask_zero=True)
print(emb_char)
char_dist = TimeDistributed(emb_char)(char_in)
# character LSTM to get word encodings by characters
char_enc = TimeDistributed(LSTM(units=20, return_sequences=False,
recurrent_dropout=0.5))(char_dist)
# main LSTM
x = concatenate([emb_word, char_enc])
x = SpatialDropout1D(0.3)(x)
main_lstm = Bidirectional(LSTM(units=50, return_sequences=False,recurrent_dropout=0.6))(x)
out = Dense(num_of_classes, activation="sigmoid")(main_lstm)
model = Model([word_in, char_in], out)我读到这与输入有关。我的X_char_tr形状是(2770, 10, 30),X_word_tr.shape是(2770, 10),y_tr是(2770,135)
history = model.fit([X_word_tr,
(np.array(X_char_tr)).astype('float32').reshape((len(X_char_tr), max_len, max_len_char))],
np.array(to_categorical(y_tr)), epochs=10, verbose=1)这是我的word嵌入层:
embedding_layer = Embedding(
vocab_size + 1,
config['W2V_DIM'],
weights=[w2v_weights],
input_length=max_sequence_len,
trainable=False
)单词矢量形状为(n_words,128)
发布于 2020-12-09 20:11:24
检查X_char_tr。据我所知,词汇表大小(n_char)是118。因此,此张量的最大允许值为118。但是第一个值是119。
试试这个:
print(tf.where(X_char_tr>118))https://stackoverflow.com/questions/65216461
复制相似问题