如何在Theano中实现不同的等级权重

时间:2016-05-04 10:45:18

标签: python machine-learning theano deep-learning theano.scan

我的问题是句子分类,这是一个两级预测问题:句子是否属于班级" 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的向量,具体取决于错误类型。然后,这个向量的平均值就是最终成本。

我的问题:

这是给两个类赋予不同权重的正确方法吗? 我的实施似乎是正确的吗?

0 个答案:

没有答案