相关疑难解决方法(0)

Tensor流中类不平衡二元分类器的损失函数

我正在尝试将深度学习应用于目标类(500k,31K)之间的高级不平衡的二进制分类问题.我想写一个自定义的损失函数,应该是这样的:最小化(100 - ((predict_smallerclass)/(total_smallerclass))*100)

欣赏有关如何构建此逻辑的任何指示.

classification tensorflow

51
推荐指数
4
解决办法
5万
查看次数

具有多个输入的 Tensorflow 2.0 自定义损失函数

我正在尝试使用以下两个损失函数优化模型

def loss_1(pred, weights, logits):
    weighted_sparse_ce = kls.SparseCategoricalCrossentropy(from_logits=True)
    policy_loss = weighted_sparse_ce(pred, logits, sample_weight=advantages)
Run Code Online (Sandbox Code Playgroud)

def loss_2(y_pred, y):
    return kls.mean_squared_error(y_pred, y)
Run Code Online (Sandbox Code Playgroud)

然而,因为 TensorFlow 2 期望损失函数的形式为

def fn(y_pred, y_true):
    ...
Run Code Online (Sandbox Code Playgroud)

我正在使用一种变通方法来解决loss_1我打包predweights放入单个张量的地方,然后再将其传递到loss_1调用中model.fit,然后将它们解压到loss_1. 这是不雅和讨厌的,因为predweights具有不同的数据类型,因此每次调用model.fit.

此外,我知道 的sample_weight论点fit,这有点像这个问题的解决方案。如果不是因为我使用了两个损失函数并且我只想将其sample_weight应用于其中一个,这可能是一个可行的解决方案。此外,即使这是一个解决方案,它也不能推广到其他类型的自定义损失函数。


话虽如此,我的问题简明地说是:

在 TensorFlow 2 中创建具有任意数量参数的损失函数的最佳方法是什么?

我尝试过的另一件事是传递 atf.tuple但这似乎也违反了 TensorFlow 对损失函数输入的期望。

keras tensorflow tensorflow2.0

9
推荐指数
2
解决办法
8641
查看次数

标签 统计

tensorflow ×2

classification ×1

keras ×1

tensorflow2.0 ×1