Tensorflow python分类训练与子类别

时间:2017-02-13 15:09:34

标签: python tensorflow classification

我面临的问题是我需要训练一个带有“maincategories”和“subategories”的张量流图。

我已经知道如何使用“maincategories”完全训练图表。

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

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

cat 0,7

狗0,3

elephant 0,02

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

猫:白色,肥胖,......

狗:哈士奇,......

当我现在用这个图表对图像进行分类时,我希望得到一个带有maincategories和子类别的输出,如下所示:

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

狗:0,2 .....

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

if name=='cat' and score>=0,7:
  classify again with catgraph and get results

在该示例中,catgraph将被训练为具有不同类型的cattypes。

然而,这并不是非常优雅,我希望有更好的方法来做到这一点。

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

〜喵

2 个答案:

答案 0 :(得分:0)

你可以训练一个带有两个输出的图形,除了最后一层(或者你喜欢的图层)之外的所有内容。然后你会得到每个的(比如)logloss,并根据损失的总和进行优化。如果您受到网络学习能力的束缚,您可能需要权衡一次损失。

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

答案 1 :(得分:0)

您必须单独训练子类别。将--image_dir指向子类别的根目录。注意:这里引用的子类别是子文件夹。然后像使用主类别一样获取每个子类别的输出。我希望这会有所启发。您可以参考Tensorflow image retraining