您不需要使用,
to_categorical因为我猜您正在执行多标签分类。为了避免一劳永逸(!),让我解释一下。
如果您正在执行 二进制分类 ,则意味着每个样本可能仅属于两个类别之一,例如猫与狗或快乐与悲伤或正面评论与负面评论,那么:
- 标签应
[0 1 0 0 1 ... 0]
具有以下形状:(n_samples,)
即每个样品都带有一个(例如猫)或零(例如狗)标签。 - 用于最后一层的激活函数通常是
sigmoid
(或输出范围在[0,1]范围内的值的任何其他函数)。 - 通常使用的损失函数为
binary_crossentropy
。
如果您要进行 多类别分类 ,这意味着每个样本只能属于许多类别之一,例如猫与狗,狮子,快乐与中性,悲伤或正面评论,中立评论,负面评论,则:
- 标签应该是一次性编码的,即
[1, 0, 0]
对应于cat,[0, 1, 0]
对应于dog和[0, 0, 1]
对应于lion,在这种情况下,标签的形状为(n_samples, n_classes)
; 或者,它们可以是整数(即稀疏标签),即1
对于猫,2
对于狗和3
对于狮子,在这种情况下,标签的形状为(n_samples,)
。该to_categorical
函数用于将稀疏标签转换为一键编码的标签,当然,如果您愿意的话。 - 通常使用的激活功能是
softmax
。 - 所使用的损失函数取决于标签的格式:如果标签是单次热编码,
categorical_crossentropy
则使用标签;如果标签是稀疏的,则使用标签sparse_categorical_crossentropy
。
如果您正在执行 多标签分类 ,这意味着每个样本可能属于零,一个或多个一类,例如图像可能同时包含猫和狗,那么:
- 标签的
[[1 0 0 1 ... 0], ..., [0 0 1 0 ... 1]]
形状应为(n_samples, n_classes)
。例如,标签[1 1]
意味着相应的样本属于两个类别(例如猫和狗)。 sigmoid
因为假定每个类别都独立于另一个类别,所以使用的激活函数。- 使用的损失函数为
binary_crossentropy
。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)