dyn_unet训练过程中的错误

2023-10-12 00:59
文章标签 训练 过程 错误 unet dyn

本文主要是介绍dyn_unet训练过程中的错误,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

网络训练错误总结

  • 1.AssertionError: ground truth has different shape (torch.Size([2, 2, 128, 128, 32])) from input (torch.Size([3, 2, 128, 128, 32]))

1.AssertionError: ground truth has different shape (torch.Size([2, 2, 128, 128, 32])) from input (torch.Size([3, 2, 128, 128, 32]))

想要通过交叉验证的方式训练网络,写好了交叉验证的代码之后,将后面的网络训练代码复制过来,运行时报错。错误如下:
在这里插入图片描述
在网络训练代码上debug,观察到输入image和label的中、尺寸都是[2, 1, 128, 128, 32],但是model输出尺寸为[2, 3, 2, 128, 128, 32]
(我的图像是三维图像,加载图像时全部resize为[128, 128, 32], batch_size设置为2,网络输入通道数为1,输出通道数为2)。
经过查看dyn_unet的源码注释,发现是monai版本更新后,模型输出的形式有所改变:
monai 0.4.0 版本的参数注释如下。
monai 0.4.0
在这里面,我使用了深监督,monai0.4.0使用深监督后的输出是一个列表,这个列表里包含3个tensor,是不同尺度下的特征图,在计算loss的时候,将这三个特征图分别与label进行计算,再取加权和。
monai 0.5.0 版本的参数注释如下:
在这里插入图片描述
在0.5.0这个版本中,使用深监督的输出不再是一个列表,而是一个组合的tensor.如上边注释给出的例子一样。如果三个特征图(二维)的尺寸分别为(1, 2, 32, 24), (1, 2, 16, 12)和 (1, 2, 8, 6),则会将所有特征图的尺寸都变为与最大尺寸相同,即变为(1, 2, 32, 24),然后最终输出一个组合的tensor,其尺寸为(1, 3, 2, 8, 6)。这个时候,如果我们要分别提取三个特征图,就不能再简单的对列表进行索引了,而是要使用解除绑定指令torch.unbind()先将绑定的tensor解除绑定再分别计算loss.
以下是针对我自己代码的loss进行的改动:
在原来代码中加入preds = list(torch.unbind(preds, dim=1)),错误解除。

def _compute_loss(preds, label):preds = list(torch.unbind(preds, dim=1))labels = [label] + [interpolate(label, pred.shape[2:]) for pred in preds[1:]]return sum([0.5 ** i * loss_function(p, l) for i, (p, l) in enumerate(zip(preds, labels))])

这篇关于dyn_unet训练过程中的错误的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/192120

相关文章

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

python运用requests模拟浏览器发送请求过程

《python运用requests模拟浏览器发送请求过程》模拟浏览器请求可选用requests处理静态内容,selenium应对动态页面,playwright支持高级自动化,设置代理和超时参数,根据需... 目录使用requests库模拟浏览器请求使用selenium自动化浏览器操作使用playwright

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

解密SQL查询语句执行的过程

《解密SQL查询语句执行的过程》文章讲解了SQL语句的执行流程,涵盖解析、优化、执行三个核心阶段,并介绍执行计划查看方法EXPLAIN,同时提出性能优化技巧如合理使用索引、避免SELECT*、JOIN... 目录1. SQL语句的基本结构2. SQL语句的执行过程3. SQL语句的执行计划4. 常见的性能优

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

java内存泄漏排查过程及解决

《java内存泄漏排查过程及解决》公司某服务内存持续增长,疑似内存泄漏,未触发OOM,排查方法包括检查JVM配置、分析GC执行状态、导出堆内存快照并用IDEAProfiler工具定位大对象及代码... 目录内存泄漏内存问题排查1.查看JVM内存配置2.分析gc是否正常执行3.导出 dump 各种工具分析4.

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap