Tensorflow 2.0中的自定义平方误差损失函数

时间:2019-11-22 20:45:57

标签: python numpy tensorflow keras loss-function

我正在构建一个神经网络,该神经网络可用于基于3个S型输出节点的概率进行决策。我们将这三个选项称为ABC。因为决策基于比仅选择3个输出节点中的最高节点更为复杂的逻辑,所以我想实现一个反映决策逻辑的自定义损失函数。但是,我在实现该功能时遇到了问题。

我可能需要更改它,但这是我想使用的函数的初始版本,但使用了numpy数组而不是张量。首先计算y_pred_new,然后返回与y_true的平方差。

y_true的值被编码为A=0B=0C=2。这个想法是,如果A的输出概率比B的输出概率大10%,并且比C的输出概率大任意数量,则y_pred_new设置为{ {1}}(即0的预测)。如果A的输出概率比B大10%且比B大任意量,并且{{1} }默认为A,编码为C

y_pred_new

据我所读,在损失函数中处理张量有很多困难。例如C不起作用。尝试在具有张量的损失函数中实施此错误时,我遇到了另一个错误。

1

例如,使用上面的代码,我得到了错误:

def custom_accuracy(y_true, y_pred):
    # y_true is a (1,) numpy array
    # y_pred is a (3,) numpy array

    pred_sum = y_pred.sum()
    a_pred = y_pred[0] / pred_sum
    b_pred = y_pred[2] / pred_sum
    c_pred = y_pred[1] / pred_sum

    if a_pred - b_pred > 0.1 and a_pred > c_pred:
        y_pred_new = 0
    elif b_pred - a_pred > 0.1 and b_pred > c_pred:
        y_pred_new = 2
    else:
        y_pred_new = 1

    return (y_true - y_pred_new)**2


    custom_accuracy(np.array([0]), np.array([1,0,0])) # prints as [0]

是否可以在损失函数中做我想做的事情?

0 个答案:

没有答案