如何使用不同的损失函数训练和测试相

2024-06-01 13:34:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在训练阶段使用加权损失函数,在测试阶段使用未加权损失函数。你知道吗

我试过在训练阶段,但在测试阶段,它仍然使用加权损失函数。你知道吗

def custom_loss():  
        def euclidian_distance_loss(y_true, y_pred):
        edl_in_train = K.sqrt(K.sum(K.square((y_pred - y_true) * weight_matrix().reshape(1, 41, 41, 1))))
        edl = K.sqrt(K.sum(K.square(y_pred - y_true)))
        return K.in_train_phase(edl_in_train,edl)

    return euclidian_distance_loss

由于训练数据的形状是恒定的,而测试并非如此,因此在测试阶段开始时出现了错误:

tensorflow.python.framework.errors_impl.InvalidArgumentError: Incompatible shapes

我怎样才能使这段代码正常工作,或者在这两个阶段中有没有其他方法来使用不同的损失函数?你知道吗


Tags: 函数intruedeftrainsqrt阶段distance
1条回答
网友
1楼 · 发布于 2024-06-01 13:34:18

在测试时,因为你没有最小化损失函数,所以损失函数中到底有什么并不重要。我要做的是将未加权损失函数作为一个“度量”输入—这样它不会影响训练时的训练,但在测试时您可以自己分析它,看看您的模型是如何工作的。你知道吗

相关问题 更多 >