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

Seq2Seq Transformer任务中TF Accuracy指标报错:期望单个值却获概率列表

解决Seq-to-Seq Transformer中的准确率指标报错问题

问题根源

你的模型输出是3D张量(batch_size, output_seq_length, output_vocab_size),但默认的sparse_categorical_accuracy指标是为单步分类任务(输出形状为(batch_size, vocab_size)或(batch_size, 1, vocab_size))设计的,它会默认尝试挤压第二个维度(序列长度维度)。而你的序列长度是100而非1,因此触发了Can not squeeze dim[1], expected a dimension of 1, got 100错误。

解决方案

修改准确率指标的配置,明确指定在**最后一个维度(词汇表维度)**计算准确率,避免挤压序列长度维度。具体做法是使用tf.keras.metrics.SparseCategoricalAccuracy并设置axis=-1参数。

修改后的代码

将model.compile中的metrics部分替换为:

model.compile(
    optimizer=tf.keras.optimizers.legacy.Adam(args.learning_rate),
    loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
    metrics=[tf.keras.metrics.SparseCategoricalAccuracy(axis=-1, name='sequence_accuracy')],
    run_eagerly=False
)

额外说明

  • 损失函数SparseCategoricalCrossentropy默认已在最后一个维度计算交叉熵,只要你的标签形状是(batch_size, output_seq_length)(每个时间步对应一个词汇索引的稀疏标签),就可以正常工作。
  • 上述配置会计算每个样本在各时间步的准确率,并输出所有样本的平均结果,完全适配seq-to-seq任务的序列输出特性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 17:37:20