Как мне преобразовать тензор с помощью tf.keras.backend.eval?

#python #tensorflow #keras

#python #тензорный поток #keras

Вопрос:

Я пытаюсь создать функцию custom_accuracy для включения во model.compile время, чтобы я мог отслеживать свою пользовательскую метрику в EarlyStopping , ModelCheckpoint , и ReduceLROnPlateau .

Затем я обнаружил, что Keras вызывает мою функцию custom_accuracy с тензорами, а не с массивами Numpy. Я попытался преобразовать их в Numpy с помощью tf.keras.backend.eval .

Однако я получаю следующую ошибку:

 tensorflow.python.framework.errors_impl.InvalidArgumentError: You must feed a value for placeholder tensor 'dense_3_target' with dtype float and shape [?,?] [[{{node dense_3_target}}]]
 

Кажется, eval принимает только один параметр x (тензор для преобразования). Как мне создать заполнитель и передать его? Я был бы признателен за любые рекомендации!

Вот тестовый код.

 from tensorflow.keras import backend as K
def custom_accuracy(y_true, y_pred):
    y_true_np = K.eval(y_true)
    y_pred_np = K.eval(y_pred)
 

Комментарии:

1. Нужно увидеть больше кода, который поможет вам. Существует заполнитель, который должен быть заполнен данными. Добавьте код, в котором вы определяете y_true и y_pred

2. Я просто передаю массив numpy в model.fit, и я полагаю, что Keras сам вызывает custom_accuracy с этими параметрами. Я думаю, мне нужно будет изменить сам Keras, чтобы вмешаться за шаг до моей функции.

3. если y_true и y_pred являются массивами numpy, почему вы используете K.eval() массив numpy?

4. Я передаю Keras массивы Numpy, а Keras выполняет некоторые вычисления в Tensorflow и вызывает мою функцию с тензорами.