Распределение вероятностей возврата для каждого слова в последовательности, используя модель LSTM - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь получить вероятность того, что 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)

...