#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 и вызывает мою функцию с тензорами.