例子:
inceptionv3_model1
有 10 类(香蕉、橙子、葡萄......)inceptionv3_model2
有 3 个类(过期,笔记过期,正常)
我需要合并这两个模型以获得多个输出结果。例如过期香蕉或普通香蕉...
例子:
inceptionv3_model1
有 10 类(香蕉、橙子、葡萄......)inceptionv3_model2
有 3 个类(过期,笔记过期,正常)我需要合并这两个模型以获得多个输出结果。例如过期香蕉或普通香蕉...
您应该重新训练模型。听起来每个样本都有 2 个标签,类别 [香蕉、橙子、葡萄等] 和状态 [过期、未过期、正常](尽管我看不出正常和未过期之间的区别)。
处理这个问题最直接的方法是使用多任务学习。在此处详细阅读:
您的输入应该是data
, label_type
, label_state
, 到 inceptionv3 模型(与您使用的相同)。
现在采用您为每个当前模型使用的成本函数。像这样的东西:
cost_type = tf.nn.softmax_cross_entropy_with_logits_v2(labels=label_type, logits=logits_type)
cost_state = tf.nn.softmax_cross_entropy_with_logits_v2(labels=label_state, logits=logits_state)
或者使用您当前使用的任何损失函数。现在定义一个累积损失函数为:
cost = cost_type + cost_state
由于这些都是交叉熵(分类)损失,因此无需担心任何规模问题。最小化cost
,你应该得到一个训练有素的网络来产生两个输出。这个网络经常会在各自的任务上胜过单个网络。
您需要为上面的每个成本函数创建两个输出层。这些层中的每一层都可以连接到同一层。如果不清楚,请告诉我,我会详细说明。