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

Keras报错:意外关键字参数'class_mode',句子分类模型复现求助

解决Keras中"got an unexpected keyword argument 'class_mode'"错误

看起来你在复现句子分类模型时踩了版本兼容的坑——这个错误几乎都是因为新版本Keras(或TensorFlow整合的Keras)移除了class_mode参数,换成了更清晰的label_mode,或者某些函数根本不再支持这个参数了。下面给你具体的排查和解决步骤:

一、先确认你的Keras/TensorFlow版本

首先跑两行代码看看你用的是哪个版本:

import tensorflow as tf
print(tf.__version__)  # 如果你用的是TensorFlow自带的Keras
# 或者
import keras
print(keras.__version__)  # 如果你单独安装了Keras

如果版本是TensorFlow 2.15+或者Keras 3.x,那class_mode确实已经被弃用了。

二、替换参数名(最常见的解决方式)

如果你是在数据加载类的函数里用了class_mode(比如text_dataset_from_directory、image_dataset_from_directory这类),直接把class_mode改成label_mode就行。举个例子:

原来的错误代码

train_ds = tf.keras.preprocessing.text_dataset_from_directory(
    "./train_data",
    class_mode="categorical"
)

修改后

train_ds = tf.keras.preprocessing.text_dataset_from_directory(
    "./train_data",
    label_mode="categorical"  # 把class_mode换成label_mode
)

label_mode的可选值和原来class_mode基本一致:"categorical"(多分类one-hot标签)、"binary"(二分类)、"int"(整数标签)。

三、如果是在模型训练时误用了class_mode

要是你在model.fit()或者model.compile()里加了class_mode,那这个参数本来就不属于这些函数,直接删掉就行。分类任务的类型是通过损失函数和标签格式来控制的:

  • 二分类任务:损失用binary_crossentropy,标签是0/1的整数
  • 多分类任务:损失用categorical_crossentropy,标签要转成one-hot向量(用tf.keras.utils.to_categorical())

另外,看你提供的代码片段还不完整,顺便提一句:别忘了提取训练和测试的标签,并且转换成Keras能识别的格式,比如:

# 补全数据处理部分
train_labels = [label for (txt, label) in data[0:train_size]]
test_labels = [label for (txt, label) in data[train_size:]]

# 如果是多分类,把标签转成one-hot
import tensorflow as tf
num_classes = len(set(train_labels))
train_labels = tf.keras.utils.to_categorical(train_labels, num_classes=num_classes)
test_labels = tf.keras.utils.to_categorical(test_labels, num_classes=num_classes)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:30:59