Keras中具有不同变量类型的自定义损失函数

时间:2020-01-09 02:17:45

标签: python keras

我有一个keras.Sequential()模型,该模型旨在输出2*n值。第一个n应该被视为整数,第二个n应该被视为浮点数(即使它们实际上都是浮点数)。我想编写一个自定义的成本函数,以不同于浮点数的方式处理整数上的损失函数。

我了解到损失函数应采用def myloss(y_actual, y_predicted)的形式,如果我将其视为列表,那么我要实现的示例成本函数如下:

def myloss(y_true, y_pred):
    # Assume first half are to be treated as ints
    n = len(y_actual)/2
    y_true_ints = y_true[:n]
    y_pred_ints = y_pred[:n]
    for (y1, y2) in zip(y_true_ints, y_pred_ints):
        # Greatly penalize for diffs when floats are cast as ints
        loss += (float(round(y1)) - float(round(y2)))**4

    y_true_floats = y_true[n:]
    y_pred_floats = y_pred[n:]
    for (y1, y2) in zip(y_true_floats, y_true_floats):
        # Simple SSE for floats
        loss += (y1 - y2)**2

    return loss

在这里,我知道所有输入都将是浮点数,但我想将每个输入的前半部分转换为整数,如果输入不相同,则要施加重罚。但是,“真实”浮动部分可以视为简单的SSE。

0 个答案:

没有答案