我使用 VGG16 進行影像分割和損失函式“平衡分類熵”使用代碼
beta=0.5
def balanced_cross_entropy(beta):
def loss(y_true, y_pred):
weight_a = beta * tf.cast(y_true, tf.float32)
weight_b = (1 - beta) * tf.cast(1 - y_true, tf.float32)
o = (tf.math.log1p(tf.exp(-tf.abs(y_pred))) tf.nn.relu(-y_pred)) * (weight_a weight_b) y_pred * weight_b
return tf.reduce_mean(o)
return loss
一切正常。現在我使用代碼將此模型保存在 h5 檔案中。
vgg.save('vgg.h5')
但是當我使用 Keras 的 load_model 時
model = load_model('vgg.h5', custom_objects={'balanced_cross_entropy(beta)': balanced_cross_entropy(beta)})
我遇到錯誤。
Unknown loss function: loss. Please ensure this object is passed to the `custom_objects` argument.
有人可以幫忙嗎,我懷疑問題可能是由于測驗版?
uj5u.com熱心網友回復:
如果只想進行推理,可以通過指定來避免這個問題
model = load_model('vgg.h5',compile=False)
否則,您需要通過以下方式加載:
model = load_model("vgg.h5", custom_objects={'loss': balanced_cross_entropy(beta)}); 在您撰寫的代碼中,balanced_cross_entropy(beta)而不是loss.
簡短說明:
key incustom_object的名字其實就是內部函式的名字(其實是由回傳的balanced_cross_entropy(beta);外部函式的名字其實<key,value>就是custom_object字典中pair的值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/361886.html
上一篇:使用sequential()模型進行二元分類的準確度矩陣
下一篇:TensorFlowRecommenders-ValueError:Shapemustberank2butisrank3
