我在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)。如果你给我一点意见,我将不胜感激?