Nan Loss Keras模型

时间:2018-12-02 21:12:01

标签: python keras

我正在我的变分自动编码器模型中定义自定义损失函数。我想对编码表示和原始输入对之间的汉明损失进行加权,并将其添加到重构和KL散度损失中。

但是我可能会因为0/0或1/0类型的错误而遭受损失。我是keras的新手,我不知道如何避免使用这些条件。

我的代码段是:

def differences(pair_of_tensors):
    x, y = pair_of_tensors
    return y / x

def enc_ham_loss(y_true,y_pred):
    # calculate pairwise hamming distance matrix
    # differences of y_pred probabilities)

    pairwise_diff_pred = K.abs(K.expand_dims(y_pred[0], 0) - 
    K.expand_dims(y_pred[0], 1))
    pairwise_distance_pred = K.sum(pairwise_diff_pred, axis=-1)

     # calculate pairwise hamming distance matrix for inputs
     pairwise_diff_true = K.abs(K.expand_dims(y_true[0], 0) - 
     K.expand_dims(y_true[0], 1))
     pairwise_distance_true = K.sum(pairwise_diff_true, axis=-1)


     hamm_sum = Lambda(lambda inputs: pairwise_distance_pred / 
     pairwise_distance_true)([pairwise_distance_true, pairwise_distance_true])
     return K.sum(hamm_sum, axis=-1)

我正在使用y_pred[0],因为我的模型有多个输出。我只想知道如何更改函数enc_ham_loss,以便仅分割有效值,而不分割导致Nan的值。

不胜感激。

预先感谢

0 个答案:

没有答案
相关问题