在Keras中传递具有不同大小的输入样本和目标样本

时间:2019-08-31 05:18:55

标签: python tensorflow keras

我正在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)

0 个答案:

没有答案