Вы можете получить вероятности из последнего слоя (плотный слой с softmax). Пример модели:
import keras
import keras.layers as L
# instantiate sequential model
model = keras.models.Sequential()
# define input layer
model.add(L.InputLayer([None], dtype='int32'))
# define embedding layer for dictionary size of 'len(all_words)' and 50 features/units
model.add(L.Embedding(len(all_words), 50))
# define fully-connected RNN with 64 output units. Crucially: we return the outputs of the RNN for every time step instead of just the last time step
model.add(L.SimpleRNN(64, return_sequences=True))
# define dense layer of 'len(all_words)' outputs and softmax activation
# this will produce a vector of size len(all_words)
stepwise_dense = L.Dense(len(all_words), activation='softmax')
# The TimeDistributed layer adds a time dimension to the Dense layer so that it applies across the time dimension for every batch
# That is, TimeDistributed applies the Dense layer to each time-step (input word) independently. Without it, the Dense layer would apply only once to all of the time-steps concatenated.
# So, for the given time step (input word), each element 'i' in the output vector is the probability of the ith word from the target dictionary
stepwise_dense = L.TimeDistributed(stepwise_dense)
model.add(stepwise_dense)
Затем скомпилируйте и подгоните (обучите) вашу модель:
model.compile('adam','categorical_crossentropy')
model.fit_generator(generate_batches(train_data),len(train_data)/BATCH_SIZE,
callbacks=[EvaluateAccuracy()], epochs=5,)
Наконец - просто используйте функцию прогнозирования, чтобы получить вероятности:
model.predict(input_to_your_network)
И, чтобы было ясно, i -ая выходная единица слоя softmax представляет прогнозируемую вероятность i -го класса (также см. Здесь) .