У меня есть модель Lstm для прогнозирования последовательности, которая показана здесь:
def create_model(max_sequence_len, total_words):
input_len = max_sequence_len - 1
model = keras.models.Sequential()
model.add(layers.Embedding(total_words, 50, input_length=input_len))
model.add(layers.LSTM(50, input_shape=predictors[:1].shape))
model.add(layers.Dropout(0.2))
model.add(layers.Dense(activation='softmax', units = total_words))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'], lr=0.01)
return model
model_sb = create_model(max_sequence_len, total_words)
history = model_sb.fit(X_train, y_train, epochs = 20 , shuffle = True, validation_split=0.3, )
и это работает хорошо, но я хочу взять 2 вывода из моей модели, которые с большей вероятностью выводятся в плотном слое softmax.
чтобы взять их я могу использовать этот код:
predicted = model_sb.predict(test_sequence, verbose=1)
А затем по этому коду найдите первый n вывод с высокой вероятностью:
y_sum = predicted.sum(axis=0)
ind = np.argpartition(y_sum, -n)[-n:]
ind[np.argsort(y_sum[ind])]
Но мне нужно знать точность моей модели, если на выходе будет один из этих n выходных данных (с условием "или")
Есть ли пакет, который мне поможет?
Я имею в виду, что я не хочу оценивать мою модель только с одним выходом с наибольшей вероятностью, я хочу оценить точность и потерю по результату с высокой вероятностью 2.