gpt4 book ai didi

python-3.x - 如何在自定义损失函数中定义样本权重?

转载 作者:行者123 更新时间:2023-12-04 17:32:56 25 4
gpt4 key购买 nike

我需要对二进制序列进行分类,我想为序列的后面部分分配更高的权重。

例如我要赋值:

sequence      -- weights for the samples in this sequence
[0,0,0,1,1,1] -- [1,1,1,2,3,4]

输入的形状为 m x n,因此长度为 n 的 m 个样本。

我想在自定义损失函数中分配权重,因为我想了解它是如何工作的(并且通过使用 sample_weight 我遇到了各种维度问题)。

现在我使用以下损失函数:

def weightedLoss(weight):
def binaryPart(yTrue,yPred):
return K.mean(loss.binary_crossentropy(yTrue,yPred)*weight)
return binaryPart

权重是一个包含样本权重的 m x n 矩阵。我收到的错误消息是:(m=20000,n=63)

InvalidArgumentError: Incompatible shapes: [64] vs. [20000,63] [[{{node loss_39/dense_120_loss/mul}}]]

我不明白这个错误是什么意思。 dense_120 是我的输出层,输出形状为 (None,63)。

我觉得我的损失函数的定义有误,我错过了什么?

最佳答案

正如 Daniel 所说,您的输出层应该包含 64 个神经元,但看起来它目前包含 63 个。这应该可以修复您的错误。

为了回答有关样本权重的问题,Keras .fit 方法已经为 sample_weights 提供了一个参数,因此您可以在不创建自定义损失函数的情况下使用它。

fit(x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None, validation_freq=1)

关于python-3.x - 如何在自定义损失函数中定义样本权重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57893179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com