only batches of spatial targets supported:三通道分割 one-hot 转为每像素类别编号

简介: 该报错源于PyTorch交叉熵要求标签为`[N, H, W]`(3D),但输入了`[N, 3, H, W]`(4D)掩码。需先验证三通道是否为互斥one-hot,再用`argmax(dim=1)`转为整型标签,并妥善处理全零未标注像素(设`ignore_index`),避免误判为背景类。(239字)

原帖每个像素只属于三个输出波段中的一个,但 masks 为 [N,3,H,W];旧交叉熵目标要求 [N,H,W]:

RuntimeError: only batches of spatial targets supported (3D tensors) but got targets of dimension: 4

先判断三通道掩码是否真是互斥 one-hot

原题称每像素只属于 Band5/6/7 中一个类别,但数据又做了归一化。转换前应检查 unique 和通道和,确认不是连续波段值、多标签或全零未标注。不能一律 argmax,把无标注像素默认为类别 0。

先证明三通道数据确实是互斥 one-hot,再转换。不要对多标签、连续波段值或未标注像素直接 argmax。

在 loss_new(outputs,masks) 前检查:

print("josh050608")
print("outputs:", outputs.shape, outputs.dtype)
print("masks:", masks.shape, masks.dtype)
print("values:", masks.unique()[:20])
print("channel sums:", masks.sum(dim=1).unique()[:20])

若每个像素恰有一个 1,其余为 0:

assert masks.ndim == 4 and masks.shape[1] == outputs.shape[1]
assert ((masks == 0) | (masks == 1)).all()
assert (masks.sum(dim=1) == 1).all()
target = masks.argmax(dim=1).long()
assert target.shape == (outputs.shape[0], *outputs.shape[2:])
loss = loss_new(outputs, target)

原帖把 y 送入 normalize_zero_to_one,这对类别编号通常不合适。标签应保留类别语义;如果只是对输入图像归一化,不要把相同操作无条件套在掩码上。

若存在全零的未标注像素,先定义 ignore_index,并在转换后把这些位置设为该值,再给 CrossEntropyLoss 配置相同 ignore_index。否则 argmax 会把全零像素误判为类别 0。若一个像素允许多个类,则应使用同形状浮点多标签目标和 BCE 类损失。

现代 CrossEntropyLoss 也支持合法软目标,但原帖旧报错路径不能据此自动视为支持。验证类别图范围、空间尺寸与可视化映射,再做一个 batch 的反向。

包含未标注像素的完整小例子

下面 CPU 合成分割目标先建立合法 one-hot,再将一个像素设为全零表示忽略。转换时显式使用 ignore_index,不把它当作背景类别:

import torch
import torch.nn.functional as F
from torch import nn
class_map = torch.tensor([[[0, 1], [2, 0]]], dtype=torch.long)
masks = F.one_hot(class_map, num_classes=3).permute(0, 3, 1, 2).float()
masks[:, :, 0, 0] = 0
channel_sum = masks.sum(dim=1)
assert ((masks == 0) | (masks == 1)).all()
assert ((channel_sum == 0) | (channel_sum == 1)).all()
target = masks.argmax(dim=1).long()
ignore_index = -100
target[channel_sum == 0] = ignore_index
head = nn.Conv2d(5, 3, kernel_size=1)
logits = head(torch.randn(1, 5, 2, 2))
loss = nn.CrossEntropyLoss(ignore_index=ignore_index)(logits, target)
assert target.shape == (1, 2, 2)
assert target[0, 0, 0].item() == ignore_index
assert torch.isfinite(loss)
loss.backward()
assert head.weight.grad is not None
print("target/loss:", target, loss.item())

这里“全零=忽略”是例子明确规定的标注语义,真实数据若把全零当背景,应按任务建立对应类别,而不是照搬。若整批所有像素都被忽略,还需处理有效像素数为零的情况,避免把空监督产生的非有限损失继续反向。

类别掩码通常不做输入图像那种逐值归一化。若原始通道值不是 0/1,先追查生成与归一化流程;多正类则按多标签损失设计,不能用互斥类图丢弃信息。

验收包含边界值、忽略区域、类别图可视化、空间 shape 和一次 backward。现代软目标接口有自己的约束,不能据它将原题旧版四维目标自动视为正确。

参考:原始求助帖;技术依据:CrossEntropyLoss(2.5)、BCEWithLogitsLoss(2.5)。

相关文章
|
10天前
|
Linux 开发工具 iOS开发
Codex保姆级教程(下载+安装+登录+使用,含所有版本,2026最新)
Codex是OpenAI推出的开源AI编程智能体,本地运行,可理解整个代码库,支持自然语言指令改代码、执行命令、跑测试、修Bug,兼容Win/macOS/Linux。(239字)
3995 19
|
11天前
|
JavaScript API iOS开发
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(DSH)是DeepSeek于2026年开源的MIT协议AI Agent框架,支持插件化组装模型、工具、沙箱与UI,兼容主流大模型。本文提供免Node.js的桌面端安装包(Win/macOS),含详细图文教程及热门插件推荐。
4135 49
|
11天前
|
iOS开发 Docker MacOS
【2026实测】Docker Desktop下载、安装、汉化、配置教程(附官网安装包)
Docker Desktop 是 Docker 官方推出的桌面容器管理工具,集成引擎、CLI、图形界面与 Kubernetes,支持 Win/macOS/Linux。2026 最新版 4.88.1 强化 ARM 原生运行、镜像加速及资源可视化,附中文汉化与国内镜像配置指南。
1976 7
|
6天前
|
云安全 人工智能 安全
|
6天前
|
存储 弹性计算 人工智能
2026 年阿里云双十一活动入口攻略,新客服务器优惠通道、三大会场入口梳理
综合来看,2026年阿里云双十一活动入口清晰: 阿里云轻量应用服务器、阿里云ECS云服务器、阿里云GPU云服务器、阿里云百炼大模型服务平台 活动会场、综合权益中心、99计划专场三大入口覆盖服务器、AI权益与续费特价;新用户通过控制台首页banner、权益中心、产品页三处路径进入专属专场,老用户通过控制台弹窗和费用中心权益中心进入老客专区,企业用户做企业实名后解锁专属满减与阶梯折扣。
819 0
|
5天前
|
Linux 开发工具 iOS开发
2026最新codex下载安装保姆级使用教程(下载+安装+登录+使用,含所有历史版本)
本文详解OpenAI Codex国内快速上手指南:提供Win/macOS/Linux全平台免安装包、npm/Homebrew等多方式安装、账号/API Key双登录、简体中文切换,覆盖下载、安装、汉化、使用及高频避坑(如微软商店失败、npm超时等),10分钟即可跑通。
1087 2
|
12天前
|
安全 算法 定位技术
《高性价比人生指南》完整原版:普通人用最少的资源,过好这一生的底层逻辑~How To Live Better
📖《高性价比人生指南》是一份基于实证、拒绝焦虑的生存手册,倡导以“人生时薪”为视角,重新计算时间、金钱与精力的成本与收益。它不承诺逆袭,只教人算清账:省下的钱若耗掉时间便亏;买体验比买物品更值;睡眠是最高杠杆的健康投资;关系贵在情绪价值而非表面热络;学习重在改变行为而非自我安慰。核心理念:用低成本、高回报的微小行动,换取长期的选择权——不是成为谁,而是掌控自己人生的主动权。
2144 6
|
云安全 安全 网络安全
|
24天前
|
人工智能 API 开发工具
DeepSeek Harness 神插件:白嫖 13 家大厂模型
`dsh-our-free-model` 是 DeepSeek Harness 神级插件:零配置、零API Key、零账号,聚合13家大厂免费模型(含DeepSeek V4.1 Flash、Kimi K3等),支持本地网关、用量看板与自动降级,真正实现“白嫖即用”。
4337 58

热门文章

最新文章