InvalidArgumentError:索引[120,0] = 3080 不在 [0, 32) [[{{node embedding_6/embedding_lookup}}]]

问题描述 投票:0回答:2

我看到其他人也发表了类似的问题。但不同之处在于我运行的是 Keras 功能 API,而不是顺序模型。

from keras.models import Model
from keras import layers
from keras import Input
text_vocabulary_size = 10000
question_vocabulary_size = 10000
answer_vocabulary_size = 500

text_input = Input(shape=(None,), dtype='int32', name='text')
embedded_text = layers.Embedding(64, text_vocabulary_size)(text_input)
encoded_text = layers.LSTM(32)(embedded_text)
question_input = Input(shape=(None,), dtype='int32', name='question')
embedded_question = layers.Embedding( 32, question_vocabulary_size)(question_input)
encoded_question = layers.LSTM(16)(embedded_question)

concatenated = layers.concatenate([encoded_text, encoded_question],axis=-1) 

## Concatenates the encoded question and encoded text

answer = layers.Dense(answer_vocabulary_size, activation='softmax')(concatenated)
model = Model([text_input, question_input], answer)
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['acc'])

将数据输入多输入模型

import numpy as np
num_samples = 1000
max_length = 100

text = np.random.randint(1, text_vocabulary_size, size=(num_samples, max_length))

question = np.random.randint(1, question_vocabulary_size,  size=(num_samples, max_length))

answers = np.random.randint(0, 1, size=(num_samples, answer_vocabulary_size)) 

使用输入列表进行拟合

model.fit([text, question], answers, epochs=10, batch_size=128)

我在尝试拟合模型时遇到的错误如下。

InvalidArgumentError: indices[120,0] = 3080 is not in [0, 32)
     [[{{node embedding_6/embedding_lookup}}]]
python keras nlp lstm
2个回答
3
投票

词汇表的维度是

Embedding
类的第一个参数,您将它们设置为第二个参数。您只需切换为嵌入实例提供的参数即可。


0
投票

增加 vocab_size +1,可以工作

© www.soinside.com 2019 - 2024. All rights reserved.