gpt4 book ai didi

python - 我应该用 tf.one_hot 对背景类进行什么编码?

转载 作者:太空宇宙 更新时间:2023-11-04 01:58:49 24 4
gpt4 key购买 nike

当我做分类工作时,我需要用one_hot方法编码一个classid。但是我应该使用 tf.one_hot 函数将背景类编码为 -1 或 0 吗?

例如:

// plan a
logits = [0.1, 0.1, 0.2, 0.3, 0.4]
classids = [-1,1,2,3,4] // -1 is background class
class_num = 5
on_hot_class = tf.one_hot(class_ids, depth=class_num)
loss = tf.keras.losses.categorical_crossentropy(one_hot_class,class_logits, from_logits=True)

// plan b
logits = [0.1, 0.1, 0.2, 0.3, 0.4]
classids = [0,1,2,3,4] // 0 is background class
class_num = 5
on_hot_class = tf.one_hot(class_ids, depth=class_num)
loss = tf.keras.losses.categorical_crossentropy(one_hot_class,class_logits, from_logits=True)

最佳答案

按照规范,您会像对待任何其他背景类一样对待您的背景类,并将其编码为 one_hot(on_value=1)。如果您想强调此类,您可以使用加权 tf.nn.weighted_cross_entropy_with_logits 并为该类分配更高的权重。

由于您依赖于 logits 的交叉熵,因此 logits 函数的输出将始终介于 0 和 1 之间。这意味着,只要您的模型看到背景类的输入,它总是会产生高损失值。这很可能会扰乱您的训练。这仍然并不意味着您不能使用 -1 或者它在任何可以想象的情况下都不会产生积极影响。

关于python - 我应该用 tf.one_hot 对背景类进行什么编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56179409/

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