首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LSTM InvalidArgumentError

LSTM InvalidArgumentError
EN

Stack Overflow用户
提问于 2020-12-09 20:06:14
回答 1查看 78关注 0票数 1

我试图同时实现字符和单词lstm,但我一直收到这个错误:

代码语言:javascript
复制
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

这是我的模型:

代码语言:javascript
复制
# 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)

代码语言:javascript
复制
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嵌入层:

代码语言:javascript
复制
embedding_layer = Embedding(
    vocab_size + 1,
    config['W2V_DIM'],
    weights=[w2v_weights],
    input_length=max_sequence_len,
    trainable=False
)

单词矢量形状为(n_words,128)

EN

回答 1

Stack Overflow用户

发布于 2020-12-09 20:11:24

检查X_char_tr。据我所知,词汇表大小(n_char)是118。因此,此张量的最大允许值为118。但是第一个值是119。

试试这个:

代码语言:javascript
复制
print(tf.where(X_char_tr>118))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65216461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档