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

多输出CNN年龄性别检测模型metrics参数ValueError问题求助

解决多输出CNN模型的Metrics ValueError问题

错误原因

你的模型包含性别二分类和年龄回归两个输出,但在model.compile()中仅传入了1个评估指标,Keras要求多输出模型的metrics参数条目数必须与输出数一致。同时要注意:年龄预测是回归任务,不能使用仅适用于分类任务的accuracy指标。

解决方案

针对多输出模型,有两种规范的metrics设置方式:

方式1:列表对应式

按输出顺序,为每个输出指定对应的评估指标(单个指标或指标列表):

  • 第一个输出(性别分类):用accuracy
  • 第二个输出(年龄回归):用回归类指标,比如mae(平均绝对误差)或mse(均方误差)

修改后的compile代码:

model.compile(
    loss=["binary_crossentropy", "mae"],
    optimizer="Adam",
    metrics=[["accuracy"], ["mae"]]  # 每个子列表对应一个输出的指标
)

方式2:字典映射式(更直观)

利用输出层的name参数,直接为每个输出指定指标,可读性更强:

model.compile(
    loss={"sex_out": "binary_crossentropy", "age_out": "mae"},
    optimizer="Adam",
    metrics={"sex_out": "accuracy", "age_out": "mae"}
)

如果需要为单个输出设置多个指标,也可以用列表:

metrics={"sex_out": ["accuracy", "recall"], "age_out": ["mae", "mse"]}

修改后的完整模型代码

def model(input_shape):
    inputs=Input((input_shape))
    conv_1=Convolution(inputs,32)
    maxp_1=MaxPooling2D(pool_size=(2,2))(conv_1)
    conv_2=Convolution(maxp_1,64)
    maxp_2=MaxPooling2D(pool_size=(2,2))(conv_2)
    conv_3=Convolution(maxp_2,128)
    maxp_3=MaxPooling2D(pool_size=(2,2))(conv_3)
    conv_4=Convolution(maxp_3,256)
    maxp_4=MaxPooling2D(pool_size=(2,2))(conv_4)
    flatten= Flatten()(maxp_4)
    dense_1=Dense(64,activation='relu')(flatten)
    dense_2=Dense(64,activation='relu')(flatten)
    drop_1=Dropout(0.2)(dense_1)
    drop_2=Dropout(0.2)(dense_2)
    output_1=Dense(1,activation='sigmoid',name='sex_out')(drop_1)
    output_2=Dense(1,activation='relu',name='age_out')(drop_2)
    model=Model(inputs=[inputs],outputs=[output_1,output_2])
    # 采用字典映射式配置loss和metrics
    model.compile(
        loss={"sex_out": "binary_crossentropy", "age_out": "mae"},
        optimizer="Adam",
        metrics={"sex_out": "accuracy", "age_out": "mae"}
    )
    return model

关键注意点

  • 回归任务(年龄预测)不能使用accuracy,该指标仅用于衡量分类任务的预测正确比例,对连续值预测完全不适用,必须选用回归类指标。
  • 多输出模型的loss和metrics参数,使用字典映射式比列表式更易维护,尤其是当输出顺序调整时,不会出现指标匹配错误。

内容的提问来源于stack exchange,提问作者Satya Prakash Mohanty

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:13:11