我想在训练阶段使用加权损失函数,在测试阶段使用未加权损失函数。你知道吗
我试过在训练阶段,但在测试阶段,它仍然使用加权损失函数。你知道吗
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
我怎样才能使这段代码正常工作,或者在这两个阶段中有没有其他方法来使用不同的损失函数?你知道吗
在测试时,因为你没有最小化损失函数,所以损失函数中到底有什么并不重要。我要做的是将未加权损失函数作为一个“度量”输入—这样它不会影响训练时的训练,但在测试时您可以自己分析它,看看您的模型是如何工作的。你知道吗
相关问题 更多 >
编程相关推荐