使用Keras(Theano后端)运行DKT代码时class_mode参数无效错误求助
解决Keras中"Invalid argument 'class_mode'"错误的方案
嘿,我来帮你搞定这个运行DKT代码时遇到的Keras错误!这个问题大概率是Keras版本不兼容导致的——你用的Keras版本和DKT代码编写时依赖的版本对不上,才会出现class_mode参数无效的提示。
下面给你具体的解决步骤:
1. 先确认你的Keras版本
先打开终端,运行这条命令看看当前Keras的版本:
python -c "import keras; print(keras.__version__)"
DKT是比较早期的项目,大概率是基于Keras 1.x写的,如果你的环境里装的是Keras 2.x,就会出现参数不兼容的问题,因为Keras 2.x对class_mode的可选值和使用场景做了调整。
2. 两种解决思路任选其一
思路一:降级Keras到兼容版本
如果不想修改代码,直接把Keras降级到DKT适配的版本(比如Keras 1.2.2),终端运行:
pip install keras==1.2.2
这个版本和Theano后端兼容性很好,刚好匹配你用的Python 2.7环境。
思路二:修改DKT代码中的class_mode参数
如果你想保留当前的Keras版本,就找到代码里所有用到class_mode的地方,把它替换成当前Keras版本支持的取值:
- Keras 2.x中,
class_mode常见的合法取值有:'categorical'(多分类)、'binary'(二分类)、'sparse'(稀疏标签)、'input'(输入作为目标)或者None(无标签) - 比如找到DKT代码里类似
class_mode='xxx'的行,把不符合上述取值的参数替换成对应场景的合法值。举个例子,如果是多分类任务,就改成class_mode='categorical'。
3. 额外检查点
修改完后,再确认模型编译时的loss函数和class_mode是否匹配:
- 如果用
class_mode='categorical',loss应该用'categorical_crossentropy' - 如果用
class_mode='binary',loss应该用'binary_crossentropy'
这样调整后,再运行代码应该就能解决这个参数错误啦!
内容的提问来源于stack exchange,提问作者Pretty Ninà
相关产品推荐
相关产品推荐

