我正在Keras中编写LSTM语言模型。假设
-输入样本的形状为(20, 5)
-目标样本(标签)的形状为(20 * 5)
-输出预测的形状为(20 * 5, 100)
当我将输入目标对传递给模型时,Keras会引发异常
ValueError: Input arrays should have the same number of samples as target arrays.
输入样本和目标样本确实具有不同的大小,但是最终输出预测和目标样本的形状将具有相同的大小((20 * 5, ...)
)。我想用上述形状计算输出预测和目标样本之间的sparse_categorial_crossentropy
。
如果输出样本的大小与目标样本大小相同,如何将大小不同的输入样本和目标样本传递给Keras模型?预先感谢。
下面是一些用于创建模型的示例代码。
model = Sequential()
# input shape: (20, 5)
model.add(Embedding(input_dim=100, output_dim=10))
# shape after encoding: (20, 5, 10)
model.add(LSTM(units=10, return_sequences=True))
model.add(LSTM(units=10))
# shape after lstm: (20 * 5, 10)
model.add(Dense(units=100, activation='softmax'))
# output shape: (20 * 5, 100)
model.compile(loss='sparse_categorical_crossentropy')
# train_batch is a batch generator. For each batch, it returns the
# input and target samples with the shape (20, 5) and (20 * 5) respectively
model.fit_generator(generator=train_batch)