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

TensorFlow使用sklearn鸢尾花数据集训练时维度不匹配报错ValueError

问题根因

错误与sklearn导入的鸢尾花数据集格式无关,你的网络结构、损失函数SparseCategoricalCrossentropy的选择已经适配sklearn输出的整数格式标签,问题出在Precision指标的默认配置仅适配二分类场景,无法匹配多分类任务的输出维度。
你当前是3分类任务,模型输出维度为(None, 3),而默认配置的Precision指标期望接收二分类的(None, 1)维度输出,因此触发维度不兼容报错。

解决方案

有两种可行修改方式,按需选择即可:

  • 方案1:不需要统计Precision指标,直接移除编译参数中的precision项
    修改后的compile代码如下:
    model_1.compile(loss=tf.keras.losses.SparseCategoricalCrossentropy(),
                     optimizer=tf.keras.optimizers.Adam(),
                     metrics=["accuracy"])
    
  • 方案2:需要保留Precision指标,初始化时指定多分类配置
    首先在创建Precision指标时指定分类数和平均规则,再传入compile参数:
    # 初始化多分类Precision,average可选值为macro/micro/weighted,可根据评估需求调整
    multi_precision = tf.keras.metrics.Precision(num_classes=3, average='macro', name='precision')
    # 编译模型
    model_1.compile(loss=tf.keras.losses.SparseCategoricalCrossentropy(),
                     optimizer=tf.keras.optimizers.Adam(),
                     metrics=["accuracy", multi_precision])
    

两种方案修改后都可以正常适配sklearn导入的鸢尾花数据集完成训练。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:00:02