Keras中的DSSIM丢失功能

时间:2017-10-23 00:32:37

标签: keras keras-layer

我在keras中定义了DSSIM丢失函数。这是我的功能:

 import keras.backend as K

 def DSSIM_coef(y_true,y_pred, c1, c2):




     u_true=K.mean(y_true, axis=-1)
     u_pred=K.mean(y_pred, axis=-1)

     var_true=K.var(y_true, axis=-1)
     var_pred=K.var(y_pred, axis=-1)


     std_true=K.sqrt(var_true)
     std_pred=K.sqrt(var_pred)


     ssim=(2*u_true*u_pred+c1)*(2*std_pred*std_true+c2)
     denom=(u_true**2+u_pred**2+c1)*(var_pred+var_true+c2)

     ssim/=K.clip(denom, K.epsilon(),np.inf)

     return K.mean((1.0-ssim)/2.0)


 def DSSIM_Loss(c1,c2):
    def DSSIM(y_true,y_pred):
      return DSSIM_coef(y_true,y_pred, c1, c2)
    return DSSIM

我使用这种损失函数来惩罚CNN的地面实况输出与预测输出之间的不相似性。我还使用RMSPROP作为我的优化器,lr = 0.001。在编制模型并对其进行训练之后,我看到所有时期的损失值保持不变(0.321)。如果你给我一点意见,我将不胜感激?

0 个答案:

没有答案