我想使用keras.backend.switch在条件语句中在keras中实现自定义损失函数,出现此错误,我真的不知道如何解决,'''
from keras import backend as K
#q_low and q_high are parameters
def quantile_loss(q_low,q_high, y_p, y):
e = y_p-y
loss_low = K.mean(K.maximum(q_low*e, (q_low-1)*e))
loss_high = K.mean(K.maximum(q_high*e, (q_high-1)*e))
margin = 45 #constant number
margin_f = K.cast(margin,'float32')
cond = K.greater_equal(margin_f,y)
loss = K.switch(cond,loss_low,loss_high)
return loss
'''并且这是错误:“ ValueError:condition
的等级应小于或等于then_expression
和else_expression
的等级。ndim(condition)= 2,ndim(then_expression)= 0”寻求您的帮助。
查看the documentation for switch,我们可以看到当条件的等级大于表达式的等级时,会发生此ValueError。据我所知,switch通过检查每个维度中条件的值来工作,然后应用适当的输出。