Фон
Я работаю над проектом прогнозирования последовательности и реализую его в Tensorflow v2.
Я копирую процедуру из этого документа . У меня есть последовательные данные X
в форме (n_examples, seq_length, x_dim)
, и на каждом шаге я пытаюсь предсказать двоичный результат, так что мой результат y
будет иметь форму (n_examples, seq_length, 1)
.
Моя проблема
Для обучения использую целевую репликацию; т.е. если истинный результат для последовательности равен 1
, тогда моей целью будет t=[1]*seq_len
.
Однако при оценке модели на тестовом наборе с помощью AU C, я хочу проверить, действительно ли любое прогнозов превышает заданный порог. Например, если seq_len=3
, t=[1,1,1]
, threshold=0.2
и моя модель предсказывает y=[0.1,0.3,0.05]
, я хочу, чтобы это считалось правильным предсказанием.
Единственный способ, которым я могу сейчас придумать, реализовать это - использовать что-то подобное для каждого входа i и разных пороговых значений:
# Check if model predicts the correct label for input i
correct_pred = (any(model.predict(test_X[i,:,:]) > threshold) == any(test_y[i,:,:]))
Вопрос
Есть ли лучший способ сделать это? Было бы удобно просто использовать функцию model.evaluate
с AU C в качестве показателей, но поскольку для оценки я просто хочу проверить, превышает ли любое моих прогнозов порог, я не могу просто использовать что-то вроде model.evaluate(test_X, test_y)
.
Большое спасибо!