编译模型然后保存。 然后在加载模型时出现错误。
def triplet_loss(y_true, y_pred, alpha = 0.3):
anchor, positive, negative = y_pred[0], y_pred[1], y_pred[2]
pos_dist = tf.reduce_sum(tf.square(tf.subtract(anchor, positive)), axis=-1)
neg_dist = tf.reduce_sum(tf.square(tf.subtract(anchor, negative)), axis=-1)
basic_loss = tf.add(tf.subtract(pos_dist, neg_dist), alpha)
loss = tf.reduce_sum(tf.maximum(basic_loss, 0.0))
return loss
FRmodel.compile(optimizer = 'adam', loss = triplet_loss, metrics =
['accuracy'])
FRmodel.save('model.h5')
`FRmodel = load_model('model.h5')`
ValueError: Unknown loss function:triplet_loss
最佳答案
加载模型时使用 custom_objects:
def def triplet_loss(y_true, y_pred, alpha = 0.3):
anchor, positive, negative = y_pred[0], y_pred[1], y_pred[2]
pos_dist = tf.reduce_sum(tf.square(tf.subtract(anchor, positive)), axis=-1)
neg_dist = tf.reduce_sum(tf.square(tf.subtract(anchor, negative)), axis=-1)
basic_loss = tf.add(tf.subtract(pos_dist, neg_dist), alpha)
loss = tf.reduce_sum(tf.maximum(basic_loss, 0.0))
return loss
FRmodel = load_model('model.h5',custom_objects={'triplet_loss':triplet_loss})
你加载的是 siamese 还是 base_model?
关于keras - 加载具有自定义损失函数的模型 : ValueError: 'Unknown loss function' in keras,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52533340/