【发布时间】:2020-02-13 21:49:09
【问题描述】:
我正在使用自定义的自定义损失函数加载我的模型,但是当我运行代码时出现错误:ValueError: Unknown loss function:dice_coef_loss。是使用 2 个 GPU 创建的。当我使用 1 个 GPU 保存模型时,load_model() 没有收到错误消息。
多 GPU 训练的模型无法识别 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
【问题讨论】:
-
你的模型的编译语句是什么?
-
model.compile(optimizer=optimizer(lr=lr), loss=loss_metric, metrics=metrics)
标签: python tensorflow machine-learning keras tensorflow2.0