Module.modules()和Module.children()

摘要:
当需要返回神经网络中的每个模块时,模块。modules()方法返回网络中所有模块的迭代器,而Module。children()方法返回所有直接子模块的迭代器。具体来说,listOut[9]:[Sequential,Linear,ReLU()]In[10]:listOut[10]:[Linental,ReLU)]示例:更快的RCNN基于vgg19提取特征,但仅使用vgg19模型的一部分来提取特征。步骤:下载vgg19的pth文件,并在anaconda中直接设置pretrained=True。下载通常很慢。在model_ZOO中有各种预训练模型的下载链接:model_urls={'vgg11':'https://download.pytorch.org/models/vgg11-bbd30ac9.pth','vgg13':'https://download.pytorch.org/models/vgg13-c768596a.pth','vgg16':'https://download.pytorch.org/models/vgg16-397923af.pth','vgg19':'https://download.pytorch.org/models/vgg19-dcbb9e9d.pth','vgg11_ bn':'https://download.pytorch.org/models/vgg11_bn-6002323d.pth','vgg13_ bn':'https://download.pytorch.org/models/vgg13_bn-abd245e5.pth','vgg16_ bn':'https://download.pytorch.org/models/vgg16_bn-6c64b313.pth','vgg19_ bn':'https://download.pytorch.org/models/vgg19_bn-c79401a0.pth'}下载模型后,可以使用以下代码查看模型参数并更改模型。在vgg19.pth对等目录中创建一个test.py。

参考PyTorch document和discuss 
在PyTorch中,所有的neural network module都是class torch.nn.Module的子类,在Modules中可以包含其它的Modules,以一种树状结构进行嵌套。当需要返回神经网络中的各个模块时,Module.modules()方法返回网络中所有模块的一个iterator,而Module.children()方法返回所有直接子模块的一个iterator。具体而言:

list ( nn.Sequential(nn.Linear(10, 20), nn.ReLU()).modules() )
Out[9]:
[Sequential (
(0): Linear (10 -> 20)
(1): ReLU ()
), Linear (10 -> 20), ReLU ()]

In [10]: list( nn.Sequential(nn.Linear(10, 20), nn.ReLU()) .children() )
Out[10]: [Linear (10 -> 20), ReLU ()]

举例:Faster-RCNN基于vgg19提取features,但是只使用了vgg19一部分模型提取features。

步骤:

下载vgg19的pth文件,在anaconda中直接设置pretrained=True下载一般都比较慢,在model_zoo里面有各种预训练模型的下载链接:
model_urls = {
'vgg11': 'https://download.pytorch.org/models/vgg11-bbd30ac9.pth',
'vgg13': 'https://download.pytorch.org/models/vgg13-c768596a.pth',
'vgg16': 'https://download.pytorch.org/models/vgg16-397923af.pth',
'vgg19': 'https://download.pytorch.org/models/vgg19-dcbb9e9d.pth',
'vgg11_bn': 'https://download.pytorch.org/models/vgg11_bn-6002323d.pth',
'vgg13_bn': 'https://download.pytorch.org/models/vgg13_bn-abd245e5.pth',
'vgg16_bn': 'https://download.pytorch.org/models/vgg16_bn-6c64b313.pth',
'vgg19_bn': 'https://download.pytorch.org/models/vgg19_bn-c79401a0.pth'  }

下载好的模型,可以用下面这段代码看一下模型参数,并且改一下模型。在vgg19.pth同级目录建立一个test.py。

import torch
import torch.nn as nn
import torchvision.models as models

vgg16 = models.vgg16(pretrained=False)

#打印出预训练模型的参数
vgg16.load_state_dict(torch.load('vgg16-397923af.pth'))
print('vgg16: ', vgg16) 

modified_features = nn.Sequential(*list(vgg16.features.children())[:-1])
# to relu5_3
print('modified_features: ', modified_features )#打印修改后的模型参数

修改好之后features就可以拿去做Faster-RCNN提取特征用了。


本文内容主要参考:https://www.cnblogs.com/wmlj/p/9917827.html

免责声明:文章转载自《Module.modules()和Module.children()》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇基于Redis实现延时队列服务MySQL-查询结果缓存下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

2022年可用QQ机器人框架

以下框架信息均来源网络,排名不分前后,若需更新或新增,请私聊我。 1、Drea Robot 官网:https://drea.cc 测评:框架高效稳定,支持多种协议,多账号登录,界面清爽,社区完善,SDK简洁,包含酷Q Pro全部功能协议甚至更多,更重要的是,它基于GO-CQHTTP开源协议,因此完全免费! 2、Mirai机器人 官网:https://git...

thinkpad 老型号小黑 安装win10+linux双系统

1 下载乌班图 ios 链接:https://pan.baidu.com/s/1Tb5C9Imn9R-4b3k0OrahFA 提取码:1ypp 2 用UltraISO制作U盘启动 2.1 下载UltraISO 官网下载 https://cn.ultraiso.net/xiazai.html 网盘链接:https://pan.baidu.com/s/1Q42...

一文带你了解 HTTP 黑科技

这是 HTTP 系列的第三篇文章,此篇文章为 HTTP 的进阶文章。 在前面两篇文章中我们讲述了 HTTP 的入门,HTTP 所有常用标头的概述,这篇文章我们来聊一下 HTTP 的一些 黑科技。 HTTP 内容协商 什么是内容协商 在 HTTP 中,内容协商是一种用于在同一 URL 上提供资源的不同表示形式的机制。内容协商机制是指客户端和服务器端就响应的资...

43 编译原理及cmake使用手册学习

0 引言 大量开源库需要通过cmake编译后使用,了解cmake的基本指令以及CMakeLists.txt的写法非常重要,其基础是了解编译原理。另外,为了对cmake编译的代码进行调试,需要了解CMakeList.txt的写法。本文将对这些关键问题进行探讨,并记录一些关键点。 参考了如下链接。 https://blog.csdn.net/wzzfeitia...

Metasploit 安装及使用

    官网 https://www.metasploit.com/ 使用手册 https://metasploit.help.rapid7.com/docs 简介 开源安全漏洞检测工具,附带数百个已知的软件漏洞,并保持频繁更新。被安全社区冠以“可以黑掉整个宇宙”之名的强大渗透测试框架。 MetaSploit 截止目前(2020/06/29)有两个版本:...

深入浅出Blazor webassembly之HttpClient使用

===================================参考=================================== https://www.cnblogs.com/deepthought/p/11303015.html https://www.cnblogs.com/willick/p/net-core-httpclient....