如何合并两个训练有素的 incpton_v3 模型,具有不同数量的 class 以获得多个输出?
How to merge two trained incpton_v3 models with difrent number of class for multiple output?
示例:
inceptionv3_model1
和 10 类(香蕉、橙子、葡萄...)
inceptionv3_model2
with 3 类(过期,注意过期,正常)
我需要合并这两个模型以获得多个输出结果。例如过期香蕉或普通香蕉...
您应该重新训练模型。听起来每个样本都有 2 个标签,class [香蕉、橙子、葡萄等] 和状态 [已过期、未过期、正常](尽管我看不出正常和正常之间的区别未过期)。
最直接的处理方法是使用multi-task学习。在此处阅读更多详细信息:
您的输入应 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
由于它们都是交叉熵(class化)损失,因此无需担心任何规模问题。最小化 cost
,你应该得到一个训练有素的网络来产生两种输出。这个网络经常会在各自的任务上胜过各个网络。
您需要为上述每个成本函数创建两个输出层。这些层中的每一层都可以连接到同一层。如果不清楚,请告诉我,我会详细说明。
示例:
inceptionv3_model1
和 10 类(香蕉、橙子、葡萄...)inceptionv3_model2
with 3 类(过期,注意过期,正常)
我需要合并这两个模型以获得多个输出结果。例如过期香蕉或普通香蕉...
您应该重新训练模型。听起来每个样本都有 2 个标签,class [香蕉、橙子、葡萄等] 和状态 [已过期、未过期、正常](尽管我看不出正常和正常之间的区别未过期)。
最直接的处理方法是使用multi-task学习。在此处阅读更多详细信息:
您的输入应 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
由于它们都是交叉熵(class化)损失,因此无需担心任何规模问题。最小化 cost
,你应该得到一个训练有素的网络来产生两种输出。这个网络经常会在各自的任务上胜过各个网络。
您需要为上述每个成本函数创建两个输出层。这些层中的每一层都可以连接到同一层。如果不清楚,请告诉我,我会详细说明。