用于损失函数错误的Keras后端K.switch

问题描述 投票:0回答:1

我想使用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_expressionelse_expression的等级。ndim(condition)= 2,ndim(then_expression)= 0”寻求您的帮助。

tensorflow keras deep-learning switch-statement backend
1个回答
0
投票

查看the documentation for switch,我们可以看到当条件的等级大于表达式的等级时,会发生此ValueError。据我所知,switch通过检查每个维度中条件的值来工作,然后应用适当的输出。

© www.soinside.com 2019 - 2024. All rights reserved.