对特定标签

时间:2018-04-04 06:22:35

标签: python tensorflow machine-learning keras

我正在训练一个有16个标签作为输出的数据集。在完成训练时,我想训练另一个数据集,其中第一个数据集的权重只有16个标签的子集。一个朋友告诉我,我必须在那些丢失的标签上设置零丢失错误。

我使用tensorflow和keras作为高级API。任何提示如何做到这一点?

1 个答案:

答案 0 :(得分:0)

在keras中,每个模型都有一个layers属性,您可以在其中重用这些层来重建模型。重复使用这些图层将导致重量分配。

您的问题有两种解决方案:

  1. 在你的第二个模型中构建一个新的输出层,其中包含适量的输出神经元,这些神经元没有重量分配。 (不完全是你想要的,但很容易实现) 另外,根据您的使用情况,您可能需要freeze上一层。

  2. 构建自定义丢失函数。这在很大程度上取决于您目前使用的损失函数。但诀窍是切割你的预测,例如y_pred [:,:-2](第一个维度是批量大小)。

  3. 我个人不会推荐第二种方法。如果使用像softmax这样的激活函数,则可能仍会更新与未使用的输出神经元相对应的权重。

    此外,还有可能以某种方式获取最后一层的权重,切片并使用正确的输出重建新图层。但这可能会变得非常难看。