我有一个带有两个损失函数的神经网络,一个是2类的二元交叉熵,另一个是回归。现在我希望仅针对class_2评估回归损失,并为class_1返回0,因为回归特征对于class_1没有意义。
如何在Keras中实现这样的算法?
仅对class_1数据进行单独训练不起作用,因为我得到了南方的损失。有更优雅的方法可以将数据集的一半定义为0,另一半定义DynamicTemplate
?
答案 0 :(得分:2)
这是一个在多任务学习中非常重要的问题,其中您有多个损失函数,中间的共享神经网络结构,以及可能并非对所有损失函数都有效的输入。
您可以为每个丢失函数传递<div id="section1" class="section section-inicio">
<div class="row">
<div class="background-section-1 anm-linear"></div>
<div class="col-md-12 section-heading-main">
This is where the content goes
</div>
</div>
</div>
或1
的二进制掩码,方法与传入标签的方式相同。然后将每个损失乘以其相应的掩码。 0
的导数仅为1x
,dx
的导数为0x
。您最终将相应的损失函数中的梯度归零。实际上所有优化器都是加性优化器,这意味着您要对梯度求和,添加零是一个空操作。您的最终损失函数应该是您所有其他损失的总和。
我不太了解Keras。另一种解决方案是将损失函数更改为仅使用标签:0
。这个词几乎是0和差不多1.至少对于政府工作和神经网络而言足够接近。这是我第一次实际使用之前我意识到它就像乘以一个掩码值数组一样简单。