You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Keras中将文本标签数组转换为CNN可用的输入向量?

嘿,这个需求在Keras处理图像分类任务时太常见了,咱们一步步来搞定它:

核心思路

你需要把字符串形式的类别标签先转换成整数索引,再转成one-hot编码向量——这是Keras的CNN模型处理多分类任务时最常用的标签格式(对应categorical_crossentropy损失函数)。

具体实现步骤

因为你已经在使用Scikit-learn的工具,咱们用LabelEncoder配合Keras的工具来做,衔接非常顺畅:

1. 导入必要的库

from sklearn.preprocessing import LabelEncoder
from tensorflow.keras.utils import to_categorical

2. 把字符串标签转为整数索引

LabelEncoder会自动把你的10个字符串类别(比如'dog'、'cat')映射成0到9的整数:

# 初始化编码器
label_encoder = LabelEncoder()
# 拟合训练集标签并完成转换
encoded_train_labels = label_encoder.fit_transform(trainingLabels)

⚠️ 重要注意事项:如果你已经划分了训练集和测试集,千万不要在测试集上用fit_transform!应该用训练集拟合好的编码器来转换测试集标签,避免数据泄露:

# 假设你划分后有train_labels和test_labels两个数组
encoded_train_labels = label_encoder.fit_transform(train_labels)
encoded_test_labels = label_encoder.transform(test_labels)

3. 把整数索引转为one-hot向量

这一步是为了让标签符合Keras多分类模型的输入要求,每个标签会变成一个长度为10的向量,只有对应类别的位置为1,其余为0:

# num_classes设为你的类别总数10
categorical_train_labels = to_categorical(encoded_train_labels, num_classes=10)
categorical_test_labels = to_categorical(encoded_test_labels, num_classes=10)
后续使用

现在categorical_train_labels和categorical_test_labels就可以直接作为Keras模型的标签输入了,比如在编译模型时指定损失函数:

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

内容的提问来源于stack exchange,提问作者A_toaster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:24:51