TensorFlow Keras 多分类,准备什么数据集?
TensorFlow Keras multi classification, what datasets to prepare?
例如,如果我想训练一个模型来分类“狗”、“猫”和“既不是狗也不是猫”。
我是否需要为“非狗非猫”准备数据集?
有没有办法只用“狗”和“猫”数据集来完成它?
是的,你应该拥有全部 3 个。
从理论上讲,您可以只使用 2 进行训练,然后如果两个 logits 都很低,则声称它“都不是”。但是,您至少不需要“两个”DS 来验证您的模型是否有效。
此外,如果使用 3 组进行训练,它将更加稳健且训练速度更快。
你可以尝试有 2 个输出神经元,比如狗和猫,当用狗图片训练它时,你将预期输出设置为 10,将猫设置为 01,但是当给定一张既没有猫也没有狗的图片时,这似乎不太可能或将输出 00.
它很有可能会奏效,我目前正在使用 MNIST Fashion 数据集做作业,输出是 10 classes,我一直使用 ReLu(这意味着输出是0 to infinity, not 0 to 1) and when class 7 is selected, usually the output layer will be [0 0 0 0 0 0 some high value 0 0 0], that means if I was to feed some arbitrary输入,很可能输出会接近 0。你的问题是输出很可能不为零,你将不得不决定一些截止点,它不太可能是狗或猫。
是的,建议标记数据具有“其他”类型,并添加一个额外的输出神经元来推断other
类型
让我们从“dog”或“cat”的二进制 classifier 开始
- 大部分
softmax
激活用于输出层
- 它将结果规范化为两个classes
之一
- 帮助用户轻松决定选择
现在让我们为“其他”添加第三个神经元,我们需要一些数据来正确激活“其他”
或者,
- 使用带有两个神经元的 sigmoid
- 调整预测阈值,如果
dog
和 cat
都低于它们的阈值,则发出 neither
虽然这种替代方法可行,但可能不建议这样做,因为模型范围之外的自定义逻辑会推断出额外的class(模型不知道)。
将来,如果有人添加,比如说horse
(连同dog
和cat
),代码需要修改。在 long 运行.
中,这似乎是一种不必要的复杂性
例如,如果我想训练一个模型来分类“狗”、“猫”和“既不是狗也不是猫”。 我是否需要为“非狗非猫”准备数据集? 有没有办法只用“狗”和“猫”数据集来完成它?
是的,你应该拥有全部 3 个。 从理论上讲,您可以只使用 2 进行训练,然后如果两个 logits 都很低,则声称它“都不是”。但是,您至少不需要“两个”DS 来验证您的模型是否有效。 此外,如果使用 3 组进行训练,它将更加稳健且训练速度更快。
你可以尝试有 2 个输出神经元,比如狗和猫,当用狗图片训练它时,你将预期输出设置为 10,将猫设置为 01,但是当给定一张既没有猫也没有狗的图片时,这似乎不太可能或将输出 00.
它很有可能会奏效,我目前正在使用 MNIST Fashion 数据集做作业,输出是 10 classes,我一直使用 ReLu(这意味着输出是0 to infinity, not 0 to 1) and when class 7 is selected, usually the output layer will be [0 0 0 0 0 0 some high value 0 0 0], that means if I was to feed some arbitrary输入,很可能输出会接近 0。你的问题是输出很可能不为零,你将不得不决定一些截止点,它不太可能是狗或猫。
是的,建议标记数据具有“其他”类型,并添加一个额外的输出神经元来推断other
类型
让我们从“dog”或“cat”的二进制 classifier 开始
- 大部分
softmax
激活用于输出层 - 它将结果规范化为两个classes 之一
- 帮助用户轻松决定选择
现在让我们为“其他”添加第三个神经元,我们需要一些数据来正确激活“其他”
或者,
- 使用带有两个神经元的 sigmoid
- 调整预测阈值,如果
dog
和cat
都低于它们的阈值,则发出neither
虽然这种替代方法可行,但可能不建议这样做,因为模型范围之外的自定义逻辑会推断出额外的class(模型不知道)。
将来,如果有人添加,比如说horse
(连同dog
和cat
),代码需要修改。在 long 运行.