带有子类别的Tensorflow python分类训练

带有子类别的Tensorflow python分类训练,python,tensorflow,classification,Python,Tensorflow,Classification,我面临的问题是,我需要训练一个带有“主类别”和“子类别”的tensorflow图 我已经知道如何用“主要类别”来完全训练图形 例如,我有三种不同的动物类型:猫、狗和大象 如果我将带有图片的图表训练为这3种类型,它将返回3种类型的分数,如: 第0,7类 狗0,3 大象0,02 我想要的是培训这3种类型和这些类型的子类别,例如: 猫:白色,脂肪 狗:哈士奇 当我现在用这个图对一幅图像进行分类时,我想得到一个主要类别和子类别的输出,如下所示: 猫:0,7->白色:0,3->脂肪:0,5 狗:0,2 目

我面临的问题是,我需要训练一个带有“主类别”和“子类别”的tensorflow图

我已经知道如何用“主要类别”来完全训练图形

例如,我有三种不同的动物类型:猫、狗和大象

如果我将带有图片的图表训练为这3种类型,它将返回3种类型的分数,如:

第0,7类

狗0,3

大象0,02

我想要的是培训这3种类型和这些类型的子类别,例如:

猫:白色,脂肪

狗:哈士奇

当我现在用这个图对一幅图像进行分类时,我想得到一个主要类别和子类别的输出,如下所示:

猫:0,7->白色:0,3->脂肪:0,5

狗:0,2

目前,我看到的唯一方法是使用maincategories训练一个图形,并使用子类别训练所有maincategories的单个图形,然后编写如下代码:

if name=='cat' and score>=0,7:
  classify again with catgraph and get results
在本例中,catgraph将是一个使用不同CATTYPE作为类别的训练集

然而,这不是很优雅,我希望有更好的方式来做到这一点

我感谢你能给我的任何帮助


~Meow

您可以训练一个具有两个输出的图形,共享除最后一层(或最多一层)之外的所有内容。然后你会有一个(比如)logloss,并根据损失的总和进行优化。如果你被网络的学习能力所束缚,你可能想权衡其中一种损失


记住在摘要中跟踪这两个损失,以便于可视化。您可以将损失添加到损失集合。

您必须单独训练子类别。将
--image_dir
指向子类别的根。注意:这里我指的子类别是子文件夹。然后获得每个子类别的输出,就像主类别一样。我希望这能给我们一些启示。你可以参考