children() 与 modules() 的区别
2021/10/21 6:41:39
本文主要是介绍children() 与 modules() 的区别,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 1 children()
- 2 modules()
children()
与
modules()
都是返回网络模型里的组成元素,但是
children()
返回的是最外层的元素,
modules()
返回的是所有的元素,包括不同级别的子元素。
1 children()
net = nn.Sequential(nn.Linear(2,2), nn.ReLU(), nn.Sequential(nn.Sigmoid(), nn.ReLU())) list(net.children())
输出一共3个元素:
linear
,relu
和sequential
。
[Linear(in_features=2, out_features=2, bias=True), ReLU(), Sequential( (0): Sigmoid() (1): ReLU() )]
2 modules()
list(net.modules())
输出一共包括 6 个元素:整体的一个
sequential
,里面的一个linear
,一个relu
,一个子sequential
,以及sequential
里的sigmoid
和relu
。
[Sequential( (0): Linear(in_features=2, out_features=2, bias=True) (1): ReLU() (2): Sequential( (0): Sigmoid() (1): ReLU() ) ), Linear(in_features=2, out_features=2, bias=True), ReLU(), Sequential( (0): Sigmoid() (1): ReLU() ), Sigmoid(), ReLU()]
【注意】modules()
中重复的modules
只返回一次,是模块级的而不是torch.nn
里基础的层。
# 例 1 module = nn.Linear(2, 2) net = nn.Sequential(module, module) for idx, m in enumerate(net.modules()): print(idx, '->', m)
输出:
0 -> Sequential( (0): Linear(in_features=2, out_features=2, bias=True) (1): Linear(in_features=2, out_features=2, bias=True) ) 1 -> Linear(in_features=2, out_features=2, bias=True)
例 1 中
l = nn.Linear(2, 2)
是重复的模块,有单独的命名,是类nn.Linear()
的一个固定实例。
# 例 2 net = nn.Sequential(nn.Linear(2, 2), nn.Linear(2, 2)) for idx, m in enumerate(net.modules()): print(idx, '->', m)
输出:
0 -> Sequential( (0): Linear(in_features=2, out_features=2, bias=True) (1): Linear(in_features=2, out_features=2, bias=True) ) 1 -> Linear(in_features=2, out_features=2, bias=True) 2 -> Linear(in_features=2, out_features=2, bias=True)
例 2 中
nn.Linear(2, 2)
不是重复的模块,被看做类nn.Linear()
不同的实例。
【转载自】pytorch Module 里的 children() 与 modules() 的区别
这篇关于children() 与 modules() 的区别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享