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

TensorFlow.js二分类fitDataset训练logits与labels形状不匹配问题

问题根因

报错的核心是标签张量与模型输出张量形状不匹配:

  • 模型最后一层是units=1的sigmoid激活输出,单批次(batch size=2)的输出形状为[2, 1]
  • 直接从数组生成的标签经过batch操作后,单批次形状为[2]
  • 二元交叉熵损失要求两者形状完全一致,因此触发错误。
修复方案

只需在数据集构造阶段增加一步维度对齐操作即可,修改数据集构造的代码段:

// 原代码
// const xyDataset = tf.data.zip({xs: xDataset, ys: yDataset}).batch(2).shuffle(2)

// 修改后代码
const xyDataset = tf.data.zip({xs: xDataset, ys: yDataset})
  // 给每个标签增加最后一维,从标量转为[1]形状的张量
  .map(sample => ({
    xs: sample.xs,
    ys: tf.expandDims(sample.ys, -1)
  }))
  .shuffle(4)
  .batch(2)

修改后标签的批次形状会变为[2, 1],和模型输出形状完全匹配,即可正常训练。额外调整了shuffle和batch的顺序,符合数据集处理的常规规范,避免打乱批次内部的样本对应关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:45:05