训练深度学习分类模型时编码分类标签遇AttributeError,求排查
问题原因与解决办法
错误根源
Tokenizer是专门为文本特征预处理设计的工具,它的texts_to_sequences方法会自动对输入的文本执行lower()(转小写)等字符串预处理操作。但你的labels_train和labels_test是numpy数组格式的分类标签(并非文本字符串),数组对象本身没有lower()这个字符串方法,直接调用就触发了AttributeError。- 核心问题是你混淆了文本特征和分类标签的预处理逻辑:文本需要Tokenizer做分词、转序列,但分类标签是离散类别值,完全不需要用文本Tokenizer处理。
正确的标签处理方式
因为你输出层用了7个sigmoid神经元,说明是多标签分类任务(如果是单标签多分类,通常用softmax激活),需要把标签转换成独热编码格式:
- 如果标签是多标签格式(比如每个样本对应多个类别),用
MultiLabelBinarizer:from sklearn.preprocessing import MultiLabelBinarizer mlb = MultiLabelBinarizer() labels_train_onehot = mlb.fit_transform(labels_train) labels_test_onehot = mlb.transform(labels_test) - 如果是单标签多分类(每个样本对应一个类别),先确保标签是整数编码,再用
to_categorical:from tensorflow.keras.utils import to_categorical labels_train_onehot = to_categorical(labels_train, num_classes=7) labels_test_onehot = to_categorical(labels_test, num_classes=7)
内容的提问来源于stack exchange,提问作者Code Monkey
相关产品推荐
相关产品推荐

