TensorFlow-多个可能的标签

时间:2019-07-07 18:08:38

标签: python tensorflow machine-learning prediction

我正在创建一个井字游戏引擎,这是我的第一个Machine Learning项目。预测每个位置的最佳动作是工作。问题是,在某些位置上可能会有几个“最佳动作” 。因此,我想将这些最佳移动提供给TensorFlow,然后,如果模型预测了其中任何一个,它将算作 true / correct 预测。

我的问题是:可能吗?如果是,该如何实施?如果没有,是否有任何解决方法?

注意:我将TensorFlowPython 3一起使用。

1 个答案:

答案 0 :(得分:0)

取决于您使用的是哪种模型,但是一种解决方案可能是:

  • 将每行的标签作为^ 2维向量(井字网格中的字段数,在最常见的情况下为9,n为3)进行处理,其中值为1表示移动是否为期望在该位置,否则为0,例如=$D$4*INDEX(CHOOSE(MATCH($D$10,{"Marketing","Service"},0),Marketing_ratio,Service_ratio),MATCH(F3,CHOOSE(MATCH($D$10,{"Marketing","Service"},0),Marketing_area,Service_area),0)) 可能指示期望的移动将位于网格的两个底角
  • 模型的最后一层的输出可以通过sigmoid函数输入
  • 然后,训练期间模型的丢失可能是cross-entropy losshere是有关此主题的文章的示例)。您不希望通过softmax函数提供输出,因为它会将模型的输出值映射到概率总计为1的概率-因此,假设只有一个最理想的标签。

对于损失函数,您可以利用log-loss,它是所有标签分别的二进制交叉熵的加权和(默认情况下)。 Here是确切的定义(如果您想详细介绍)(通常最好看一下TensorFlow的源代码以了解其工作原理)。

编辑:这里的假设是模型应该一次输出所有个正确的动作,因此,取决于您要实现的目标,这可能不是您所提到的模型预测的最佳解决方案任何正确的标签。但这也许会引导您实现目标:)