Keras 图像数据生成器中的 one hot encoding 是如何工作的?

Posted

技术标签:

【中文标题】Keras 图像数据生成器中的 one hot encoding 是如何工作的?【英文标题】:How does the one hot encoding work in Keras image data generator? 【发布时间】:2022-01-15 03:41:37 【问题描述】:

所以我有 3 个图像类,猫、牛和狗。

test_batches_1 = ImageDataGenerator(preprocessing_function=tf.keras.applications.vgg16.preprocess_input) \
    .flow_from_directory(directory=test_path_1, target_size=(224,224), classes=['cat', 'dog','cow'], batch_size=10, shuffle=False)

当我这样做时

test_batches_1.class_indices

我明白了

'cat': 0, 'dog': 1, 'cow': 2

当我这样做时:-

test_imgs1, test_labels1 = next(test_batches_1)
print(test_labels1)

我明白了:-

[[1. 0. 0.]
 [1. 0. 0.]
 [0. 1. 0.]
 [0. 1. 0.]
 [0. 0. 1.]
 [0. 0. 1.]
 [0. 0. 1.]
 [0. 0. 1.]]

我更正了,因为我有 2 只猫、2 条狗和 4 只牛的照片。 但是,我不明白为什么 cat 的 0 显示为 1,0,0?或 1 表示狗显示为 0,1,0 和 2 表示牛显示为 0,0,1? 谁能帮忙解释一下逻辑?

【问题讨论】:

【参考方案1】:

原因:

数组[1,0,0]中“1”的索引为0 数组[0,1,0]中“1”的索引为1 数组[0,0,1]中“1”的索引为2

test_batches_1.class_indices 显示类的索引,所以第一个类是第 0 个索引...等

【讨论】:

第 0 位、第 1 位和第 2 位...谢谢

以上是关于Keras 图像数据生成器中的 one hot encoding 是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章

Keras:one-hot 编码的类权重(class_weight)

从 keras.preprocessing.text 在 pytorch 中导入 one_hot 等效项?

Python,Keras深度学习中非连续的字母怎么处理为one-hot编码

语义分割 Keras 的交叉熵损失

one-hot编码(pytorch实现)

使用tensorflow api生成one-hot标签数据