TensorFlow Keras多重分类,需要准备哪些数据集?

TensorFlow Keras多重分类,需要准备哪些数据集?,tensorflow,keras,logistic-regression,multiclass-classification,Tensorflow,Keras,Logistic Regression,Multiclass Classification,例如,如果我想训练一个模型来分类“狗”、“猫”和“既不是狗也不是猫”。 我是否需要为“既不是狗也不是猫”准备数据集? 有没有办法只使用“狗”和“猫”数据集来实现这一点?是的,您应该拥有所有3个数据集。 从理论上讲,你可以只使用2来训练,如果两个逻辑都很低,你就可以声称这两个逻辑都不是。但是,您至少需要“两者都不”的DS来验证您的模型是否有效。 此外,如果使用3组训练,训练将更加稳健,速度更快。你可以尝试使用2个输出神经元,如狗和猫,当使用狗图片训练时,你将预期输出设置为10,猫设置为01,但如果

例如,如果我想训练一个模型来分类“狗”、“猫”和“既不是狗也不是猫”。 我是否需要为“既不是狗也不是猫”准备数据集? 有没有办法只使用“狗”和“猫”数据集来实现这一点?

是的,您应该拥有所有3个数据集。 从理论上讲,你可以只使用2来训练,如果两个逻辑都很低,你就可以声称这两个逻辑都不是。但是,您至少需要“两者都不”的DS来验证您的模型是否有效。
此外,如果使用3组训练,训练将更加稳健,速度更快。

你可以尝试使用2个输出神经元,如狗和猫,当使用狗图片训练时,你将预期输出设置为10,猫设置为01,但如果给一张既没有猫也没有狗或将输出00的图片,这似乎不太可能


这是一个很好的工作机会,我目前正在使用MNIST Fashion数据集做作业,输出是10个类,我一直使用ReLu(意味着输出是0到无穷大,而不是0到1),当选择了类7时,通常输出层是[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0],这意味着,如果我输入一些任意的输入,输出很可能接近于0。您的问题是,输出很可能是非零的,并且您必须在不太可能是狗或猫的情况下确定某个截止点。

是的,建议标记的数据具有“其他”类型,并添加一个额外的输出神经元以推断
其他
类型

让我们从“狗”或“猫”的二进制分类器开始

  • 大多数情况下,
    softmax
    激活用于输出层
  • 它将结果规范化为两个类之一
  • 帮助用户轻松决定选择
  • 现在让我们为“其他”添加第三个神经元,我们需要一些数据来正确激活“其他”

    或者

  • 使用带有两个神经元的乙状结肠
  • 调整预测阈值,以便如果
    都低于其阈值,则发出
    两种
  • 尽管这种替代方法可行,但可能不建议使用这种方法,因为模型范围之外的自定义逻辑推断出附加类(模型不知道)


    将来,如果有人添加,比如说
    horse
    (以及
    dog
    cat
    ),则需要修改代码。从长远来看,这似乎是一个不必要的复杂性。

    感谢您的及时建议。我如何知道在多类分类中“logits较低”,因为softmax激活函数将带来1个和输出?刚刚学习的sigmoid可用于多个神经元。谢谢你的回答@Asagao,谢谢你。我们可以将输出层中的乙状结肠视为自变量(不关心输出层中其他神经元的状态)。通常不建议进行分类,因为它增加了开发人员在
    单标签
    (多类)情况下管理阈值的责任。通常,从长远来看,softmax可能有助于实现单标签。如果您使用的是
    多标签
    ,那么sigmoid可能是比
    softmax
    更好的选择。免责声明:我是这个领域的初学者。@Asagao,为了更清楚地了解您的陈述并澄清任何误解<代码>刚学会的乙状结肠可以用于多个神经元:乙状结肠只能用于单个神经元。只是我们的输出中有多个神经元,每个神经元都有一个乙状激活。每个乙状结肠激活的输出神经元独立于其他神经元。他们甚至不知道其他人的存在。其中,'softmax'必须了解所有神经元,以规范化概率分布(0..1)下的所有可能输出。非常感谢您的进一步澄清,理解“只是我们有多个神经元在输出,每个神经元都有乙状结肠激活”。太好了。祝你有美好的一天