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

相关文章

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

SpringBoot 整合 Grizzly的过程

《SpringBoot整合Grizzly的过程》Grizzly是一个高性能的、异步的、非阻塞的HTTP服务器框架,它可以与SpringBoot一起提供比传统的Tomcat或Jet... 目录为什么选择 Grizzly?Spring Boot + Grizzly 整合的优势添加依赖自定义 Grizzly 作为

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

springboot整合gateway的详细过程

《springboot整合gateway的详细过程》本文介绍了如何配置和使用SpringCloudGateway构建一个API网关,通过实例代码介绍了springboot整合gateway的过程,需要... 目录1. 添加依赖2. 配置网关路由3. 启用Eureka客户端(可选)4. 创建主应用类5. 自定

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题

《解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题》本文主要讲述了在使用MyBatis和MyBatis-Plus时遇到的绑定异常... 目录myBATis-plus-boot-starpythonter与mybatis-spring-b

SpringBoot集成SOL链的详细过程

《SpringBoot集成SOL链的详细过程》Solanaj是一个用于与Solana区块链交互的Java库,它为Java开发者提供了一套功能丰富的API,使得在Java环境中可以轻松构建与Solana... 目录一、什么是solanaj?二、Pom依赖三、主要类3.1 RpcClient3.2 Public

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

SpringBoot整合kaptcha验证码过程(复制粘贴即可用)

《SpringBoot整合kaptcha验证码过程(复制粘贴即可用)》本文介绍了如何在SpringBoot项目中整合Kaptcha验证码实现,通过配置和编写相应的Controller、工具类以及前端页... 目录SpringBoot整合kaptcha验证码程序目录参考有两种方式在springboot中使用k

SpringBoot整合InfluxDB的详细过程

《SpringBoot整合InfluxDB的详细过程》InfluxDB是一个开源的时间序列数据库,由Go语言编写,适用于存储和查询按时间顺序产生的数据,它具有高效的数据存储和查询机制,支持高并发写入和... 目录一、简单介绍InfluxDB是什么?1、主要特点2、应用场景二、使用步骤1、集成原生的Influ