简单2招GET模型参数量计算和输入尺寸随卷积大小变化推导

编程入门 行业动态 更新时间:2024-10-27 18:31:32

简单2招GET模型参数量计算和输入尺寸随<a href=https://www.elefans.com/category/jswz/34/1765938.html style=卷积大小变化推导"/>

简单2招GET模型参数量计算和输入尺寸随卷积大小变化推导

本文将介绍两种简单且实用的方法,用于计算深度学习模型的参数量,并推导了输入尺寸随卷积大小的变化过程。这些方法可以帮助读者更好地理解模型的复杂度和输入尺寸的变化,为模型设计和优化提供指导。

比如论文中,通常会比较几种模型的参数量

又比如在设计模型时,需要确定我们的输入尺寸大小是否合适,以及想经过每个卷积层后尺寸的变化。我们想看到下面的信息👇

基本上每个项目我都会过一遍这些信息,更好的掌握模型。

方法一:直接计算

对于卷积神经网络(CNN)中的每一层,我们需要考虑卷积核的大小、输入通道数、输出通道数以及偏置项的数量。以一个卷积层为例,该层的参数量可以通过以下公式计算:

参数量 = 卷积核高度 × 卷积核宽度 × 输入通道数 × 输出通道数 + 输出通道数

对于整个模型来说,我们只需要将所有层的参数量相加即可得到总参数量。

该代码是一个 Python 函数,用于打印 PyTorch 模型的可训练参数数量,并且可以选择是否打印该模型的网络结构。以下是该函数的完整代码:

def print_networks(model, verbose):"""Print the total number of parameters in the network and (if verbose) network architectureParameters:model (torch.nn.Module): 要打印的PyTorch模型verbose (bool): 是否打印模型的网络结构"""# 打印模型总参数数量num_params = sum(p.numel() for p in model.parameters() if p.requires_grad)print(f"Number of trainable parameters in the model: {num_params}, {num_params / 1e6:.3f} M")# 如果需要,打印模型的网络结构if verbose:print(model)

下面是函数的参数和使用说明:

  • model:要打印的 PyTorch 模型。
  • verbose:布尔值,指定是否打印模型的网络结构。

使用时,把 model 作为函数的第一个参数传递给该函数。如果要打印模型的网络结构,可以将 verbose 参数设置为 True;否则,将其设置为 False。

该函数计算模型的可训练参数数量并将其打印到屏幕上,总参数数量有两种显示方法。如果 verbose 参数为 True,则还将打印模型的网络结构。

举例:

from monaiworkss import UNet
model = UNet(spatial_dims=3,in_channels=1,out_channels=1,channels=(4, 8, 16, 32, 64),strides=(2, 2, 2, 2),)
print_networks(model, verbose=True)

方法二:调用三方工具

手动计算模型的参数数量和输出形状是一项繁琐而容易出错的任务。为了解决这个问题,我们可以使用torchsummary库来自动打印模型的详细信息,包括每个层的类型、输出形状以及参数数量。本文将介绍如何使用torchsummary库打印UNet模型的详细信息,并解释每个输出所代表的含义。

使用 torchsummary 库打印 model 详细信息,如果没有,用下面语句进行安装
pip install torchsummary

使用举例:

from torchsummary import summary
model = UNet(spatial_dims=3,in_channels=1,out_channels=1,channels=(4, 8, 16, 32, 64),strides=(2, 2, 2, 2),)
summary(model, (1, 128, 128, 96), device='cpu')

在这段代码中,首先导入了 summary 函数,然后创建了一个 UNet 模型,接下来,调用 summary 函数来打印模型的详细信息。summary 函数的第一个参数是要打印信息的模型,第二个参数是输入数据的尺寸,这里是一个 4 维的张量,表示批次大小为 1,高度为 128,宽度为 128,深度为 96 的图像。最后,通过设置 device=‘cpu’ 来指定使用 CPU 运行模型。

运行这段代码后,summary 函数会打印出模型的总参数数量、每个层的输出形状,以及模型参数的统计信息,如下所示:


文章持续更新,可以关注微信公众号【医学图像人工智能实战营】获取最新动态,一个关注于医学图像处理领域前沿科技的公众号。坚持已实践为主,手把手带你做项目,打比赛,写论文。凡原创文章皆提供理论讲解,实验代码,实验数据。只有实践才能成长的更快,关注我们,一起学习进步~

我是Tina, 我们下篇博客见~

白天工作晚上写文,呕心沥血

觉得写的不错的话最后,求点赞,评论,收藏。或者一键三连

更多推荐

简单2招GET模型参数量计算和输入尺寸随卷积大小变化推导

本文发布于:2023-11-16 07:15:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1613842.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:卷积   模型   尺寸   大小   参数

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!