首页 > 解决方案 > keras中的weighted_masked_objective

问题描述

根据Keras Code,Keras 计算损失值时会考虑可选的权重和掩码。

       for i in range(len(self.outputs)):
        if i in skip_target_indices:
            continue
        y_true = self.targets[i]
        y_pred = self.outputs[i]
        weighted_loss = weighted_losses[i]
        sample_weight = sample_weights[i]
        mask = masks[i]
        loss_weight = loss_weights_list[i]
        with K.name_scope(self.output_names[i] + '_loss'):
            output_loss = weighted_loss(y_true, y_pred,
                                        sample_weight, mask)
        if len(self.outputs) > 1:
            self.metrics_tensors.append(output_loss)
            self.metrics_names.append(self.output_names[i] + '_loss')
        if total_loss is None:
            total_loss = loss_weight * output_loss
        else:
            total_loss += loss_weight * output_loss

另一方面,在Keras 文档中,我看到在 compile 函数中引入了基本的损失函数,然后可以在 fit 命令中引入样本或类权重。我不确定如何将第一个代码中的“权重和掩码”与第二个文档中的“样本和类权重”相关联。谁能给我更多解释?

我的应用程序实际上是一个卷积 LSTM 网络,我在其中输入一系列图像,并希望网络生成像素类的输出图(具有相同大小的输入图),但在训练期间某些像素没有有效标签。我应该使用重量还是面具,样本还是班级?

标签: kerasloss-function

解决方案


推荐阅读