gpt4 book ai didi

tensorflow - 如何在使用自定义训练循环时使用类权重来计算自定义损失函数(即不使用 .fit )

转载 作者:行者123 更新时间:2023-12-05 06:07:21 30 4
gpt4 key购买 nike

我已经使用 tf.GradientTape() 编写了自定义训练循环。我的数据有 2 个类。类(class)不平衡; class1 数据贡献了近 80%,class2 贡献了剩余的 20%。因此,为了消除这种不平衡,我试图编写自定义损失函数,该函数将考虑这种不平衡并应用相应的类权重并计算损失。即我想使用 class_weights = [0.2, 0.8]。我找不到类似的例子。

但是我看到的所有示例都使用 model.fit 方法,这样更容易传递 class_weights。我找不到使用 tf.GradientTape 自定义训练循环的 class_weights 示例。

我确实阅读了使用 sample_weight 的建议,但是我没有可以指定样本权重的数据,因此我更喜欢使用类权重。

我正在使用 BinaryCrossentropy 损失作为损失函数,但我想根据 class_weights 更改损失。这就是我遇到的问题,如何告诉 BinaryCrossentropy 考虑 class_weights

我使用自定义损失函数的方法是否正确,或者是否有更好的方法在使用自定义训练循环(不使用 model.fit)进行训练时使用 class_weights

最佳答案

您可以编写自己的损失函数。在那个损失函数中调用 BinaryCrossentropy 然后将结果乘以你想要的权重并返回它

关于tensorflow - 如何在使用自定义训练循环时使用类权重来计算自定义损失函数(即不使用 .fit ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65487717/

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