【发布时间】:2018-04-03 11:29:03
【问题描述】:
我在 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)。如果您给我一些积分,我将不胜感激?
【问题讨论】:
标签: keras keras-layer