Керас не будет распознавать пользовательские объекты - PullRequest
0 голосов
/ 14 февраля 2020

Я загружаю свою модель, используя пользовательскую функцию потери, но когда я запускаю код, я получаю сообщение об ошибке: ValueError: Unknown loss function:dice_coef_loss. Был создан с использованием 2 графических процессоров. Когда я сохраняю модель, используя 1 GPU, load_model() я не получаю ошибку. Есть ли причина, по которой обученная модель с несколькими графическими процессорами не распознает custom_objects?

import tensorflow as tf
from tensorflow.keras.models import load_model
from tensorflow.keras import backend as K

def dice_coef(y_true, y_pred):
    y_true_f = K.flatten(y_true)
    y_pred_f = K.flatten(y_pred)
    intersection = K.sum(y_true_f * y_pred_f)
    return (2. * intersection + smooth) / (K.sum(y_true_f) + K.sum(y_pred_f) + smooth)

def dice_coef_loss(y_true, y_pred):
    return -dice_coef(y_true, y_pred)

load_model('test_2gpus_model', custom_objects = {'dice_coef': dice_coef, 'dice_coef_loss': dice_coef_loss}))

Я также пытался:

load_model('test_2gpus_model', custom_objects = {'dice_coef': dice_coef(y_true, y_pred), 'dice_coef_loss': dice_coef_loss(y_true, y_pred)}))

, но затем я получаю ошибку NameError: name 'y_true' is not defined

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...