我有一个带有自定义损失的张量流 keras 模型。尝试后,我想使用存储模型model.save(path)
并在另一个 python 脚本中仅使用以下命令加载模型进行预测model = tf.keras.models.load_model(model_path, compile=False)
.
Without compile=False
,tensorflow会抱怨缺少损失函数。呼唤model.prediction
然而会导致Model object has no attribute 'loss'
错误信息。我想打电话model.predict
无需再次指定损失。
有没有解决方案来保存/加载tf.keras.Model
没有使用模型进行预测的自定义损失?
Code
既然被问到了,模型就在多个输出/损失上进行训练,我用 lambda 定义损失来捕获权重等。这看起来像这样:
losses = [lambda y_true, y_pred: util.weighted_mse_loss(y_true, y_pred, tf.square(gain_weight)),
lambda y_true, y_pred: util.weighted_mse_loss(y_true, y_pred, tf.square(Rd_weight)),
lambda y_true, y_pred: util.pole_zero_loss(y_true, y_pred, r_weight, w_weight),
lambda y_true, y_pred: util.pole_zero_loss(y_true, y_pred, r_weight, w_weight)]
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=10E-4),
loss=losses)