Keras-仅在条件通过的情况下,才通过层传递输入

时间:2019-09-20 07:51:50

标签: python tensorflow keras neural-network deep-learning

我正在尝试开发一种模型,该模型从候选人列表中选择最佳候选人:

  • 输入:K个候选人的列表
  • 目标输出:具有x的单热点向量x[t] = p_t,其中p_tt是最佳候选的概率

这就是我在Keras中尝试做的事情:

  1. 对于给定的训练行,将每个候选项i表示为特征向量f_i(所有特征均为正)。该行的候选者可能少于K;在这种情况下,我会掩盖 /用伪f_i向量(在所有向量中)填充候选列表 -1's
  2. 将每个实际的f_i向量通过一组图层以获得一些分数s_i;虚拟特征向量不应该被传递 通过这些层,应该直接获得0分
  3. 做 所有非零s_i上的softmax并获得最终概率

第1步很简单,第3步可以通过自定义激活完成,如here所示。第2步是我不知道该怎么做;我尝试将Keras的Lambda层与K.switch一起使用:

score_layer = Lambda(lambda x: K.switch(K.sum(x) < 0, 0.0, score_using_layers(x))

但这没用。当我尝试编译模型并打印摘要时,它甚至都不会显示用于对真实特征向量评分的图层。我该怎么做?

0 个答案:

没有答案