Я пытаюсь получить вероятность того, что LSTM назначит для каждого слова в предложении, используя слой TimeDistributed.
Я тренирую такую модель:
MAXLEN = 60
size = 50
input_layer = layers.Input((MAXLEN, ))
# Add the word embedding Layer
embedding_layer = layers.Embedding(len(word_index) + 1, 300, weights=[embedding_matrix],
trainable=False)(input_layer)
embedding_layer = layers.SpatialDropout1D(0.3)(embedding_layer)
# Add the LSTM Layer
lstm_layer = layers.LSTM(size, return_sequences = True)(embedding_layer)
# Add the output Layers
output_layer1 = layers.Dense(50, activation=activation)(lstm_layer)
output_layer2 = layers.TimeDistributed(layers.Dense(1, activation="softmax"))(output_layer2)
# Compile the model
model = models.Model(inputs=input_layer, outputs=output_layer2)
print(model.summary())
model.compile(optimizer=optimizer, loss='categorical_crossentropy')
Это the model.summary ():
Слой (тип) Выходная форма Параметр #
input_1 (InputLayer) (Нет, 60) 0
embedding_1 (Встраивание) (Нет, 60, 300) 4420800
пространственный_отвод1d_1 (Пространственный (Нет, 60, 300) 0
lstm_1 (LSTM) (Нет, 60, 50 ) 70200
density_1 (Плотный) (Нет, 60, 50) 2550
time_distributed_1 (TimeDist (Нет, 60, 1) 51
Но я получаю следующую ошибку:
ValueError: Ошибка при проверке цели: ожидалось, что time_distributed_1 будет иметь 3 измерения, но получил массив с формой (5000, 1)