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

3分类口罩检测CNN模型训练报`y` argument is not supported错误如何解决

问题根因

你触发报错的直接原因是model.fit()的参数传递错误,除此之外还有多处和三分类任务不匹配的配置错误,需要一并修改。

修复步骤

  • 第一步:修正fit方法的参数传递
    你当前的写法model.fit(train_generator, EPOCHS)中,第二个位置参数会被Keras识别为标签参数y,但train_generator作为Sequence类型的生成器已经自带了样本和对应标签,不需要单独传y,需要明确指定epochs的参数名,还可以补充验证集参数同步看训练过程中的验证指标:

    model.fit(train_generator, epochs=EPOCHS, validation_data=test_generator)
    
  • 第二步:修正数据生成器的分类模式
    你当前配置的class_mode="binary"是二分类专属配置,三分类需要修改为categorical,同步修改两个生成器的对应参数:

    train_generator = datagen.flow_from_directory(
        DATASET_DIR,
        target_size = DIM_IMG,
        batch_size = BATCH_SIZE,
        class_mode = "categorical",
        subset = "training"
    )
    
    test_generator = datagen.flow_from_directory(
        DATASET_DIR,
        target_size = DIM_IMG,
        batch_size = BATCH_SIZE,
        class_mode = "categorical",
        subset = "validation"
    )
    
  • 第三步:修正输出层配置
    你当前的输出层只有1个神经元,不符合三分类的输出要求,且softmax用于1个神经元时无实际分类意义,需要改为3个神经元:

    model.add(Dense(3,activation='softmax'))
    
  • 第四步:修正损失函数配置
    你当前用的binary_crossentropy是二分类损失函数,和categorical模式匹配的三分类损失需要改为分类交叉熵:

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

所有修改完成后重新运行即可正常训练。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:45:02