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

面部表情识别(FER)系统训练报错修复求助

面部表情识别训练报错解决方案

核心问题诊断

从输出和报错信息来看,三个关键问题导致训练失败:

  • 训练集与测试集类别数量不匹配:训练集仅包含5类,但模型最后一层输出维度设为7类,测试集同样是7类,这会让交叉熵损失计算时出现维度不匹配,直接触发InvalidArgumentError。
  • Adam优化器参数过时:lr和decay参数在新版Keras/TensorFlow中已被弃用,会抛出警告。
  • steps_per_epoch和validation_steps设置错误:硬编码了视频中的28709,但实际训练集只有15991张图片,该数值会导致训练时尝试读取不存在的数据。

具体修复步骤

1. 统一数据集类别数量

检查data/train文件夹,确保其中包含7个类别文件夹(对应7种表情,如愤怒、厌恶、恐惧、快乐、悲伤、惊讶、中性),与测试集类别完全一致。若训练集缺少类别,要么补充对应类别的数据,要么将模型最后一层输出数量调整为5(需同步修改测试集类别数量,不推荐此方案)。

2. 修正Adam优化器参数

将过时的参数替换为新版支持的写法:

emotion_model.compile(loss='categorical_crossentropy', optimizer=Adam(learning_rate=0.0001, weight_decay=1e-6), metrics=['accuracy'])

3. 动态计算训练步数

用数据集实际样本数自动计算步数,避免硬编码:

# Train the neural network/model
emotion_model_info = emotion_model.fit(
        train_generator,
        steps_per_epoch=train_generator.samples // train_generator.batch_size,
        epochs=10,
        validation_data=validation_generator,
        validation_steps=validation_generator.samples // validation_generator.batch_size)

额外建议

  • 训练前可打印train_generator.class_indices和validation_generator.class_indices,确认两个数据集的类别顺序与数量完全一致,避免类别映射不匹配问题。
  • 若数据集确实只有5类,需将模型最后一层的Dense(7, activation='softmax')修改为Dense(5, activation='softmax'),同时确保测试集同步调整为5类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:15:55