我的问题是句子分类,一个两类预测问题:句子属于“1”类还是“0”类?为了解决这个问题,我使用CNN。在
然而,我想强迫模型更多地惩罚类“1”上的错误,因为对我来说,模型可靠地预测类“1”更重要,即类“0”的误报是可以容忍的。在
为此,我改变了成本函数。每当出现错误并且错误发生在类“1”上时,返回值2,否则返回1。如果没有错误,则返回0。如果预测值为“0”,那么这应该会导致成本增加,但与相反的情况相比,它应该是“1”。在
这是我的密码(抱歉搞砸了)。在
def class_imbalanced_errors(self,y_pred,y):
expr=lambda a,b: T.switch(T.neq(a,b),T.switch(T.neq(a,T.constant(1)),T.constant(1),T.constant(2)),T.constant(0))
x,y = theano.scan(expr,sequences=[y,y_pred])
return x
函数返回值为2、1或0的向量,具体取决于错误类型。这个向量的平均值就是最终的成本。在
我的问题:
这是给这两个类赋予不同权重的正确方法吗? 我的实现似乎正确吗?在
目前没有回答
相关问题 更多 >
编程相关推荐