我试图建立一个模型(简单的聊天机器人),但我坚持嵌入层。我有X_train形状=(100082,1307)-->问题y_train形状=(100082,1307)-->答案其中1307是我的最大长度的填充序列
下面是我的代码:
model = Sequential([
Embedding(total_tokens, 128, input_length=max_seq_length),
# Bidirectional(LSTM(150)),
# Dense(total_tokens, activation='softmax')
])
model.summary()
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=1e-4),
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(X_train, y_train, epochs=50)
字符串
但是,当我训练模型时,出现了一个错误,如下所示:接收到的标签值为83193,超出了有效范围[0,128)。
我该如何解决这个问题?
1条答案
按热度按时间nwlls2ji1#
这个问题是因为标签
y_train
包含的整数大于指定的间隔[0, 128)
,因为Embedding
层的输出大小设置为128
。让我们用一个简化的例子来说明这一点。在这里,我将形状从
(100082, 1307)
减少到(1000, 1307)
:我们使用随机生成器创建
y_train
Tensor,如下所示:字符串
这里我们测试10个epoch:
型
下面是输出:
型
在此示例中,模型运行时没有错误。
但是,如果生成器的上限设置为
200
(大于128):型
出现错误:
型
因此,您应该确保
y_train
中的标签在Embedding
图层的输出大小指定的有效范围内。