我正在使用Keras Sequential模型来训练许多多类分类器 .
在评估时,Keras输出置信度向量,我可以使用argmax推断出正确的类ID . 然后我可以使用查找表来接收实际的类标签(例如字符串) .
到目前为止,解决方案是加载训练的模型,然后单独加载查找表 . 由于我有很多分类器,我宁愿将两个结构保存在一个文件中 .
所以我正在寻找的是一种将实际标签查找向量集成到Keras模型中的方法 . 这将允许我有一个分类器文件,它能够获取一些输入数据并返回该数据的正确类标签 .
解决这个问题的一种方法是将模型和查找表存储在一个元组中,并将该元组写入一个pickle,但这似乎并不优雅 .
2 回答
所以我亲自尝试了一个解决方案,这似乎有效 . 我希望有更简单的东西 .
我认为第二次打开模型文件并不是最佳选择 . 如果有人能做得更好,无论如何都要做 .
可以直接在keras模型中保存标签的“列表” . 你需要使用lambda . 您只需使用包含标签的字符串张量替换lambda的输出 . 这是一个如何执行标签“注入”的虚拟示例
此模型现在存储标签并返回它们 . 所有这些与tf.tile的混乱都是必要的,因为形状(N)的keras层实际上是形状(?,N)的tf张量,我们加上这个?标签张量的维度 .