【PyTorch】网络搭建中*list的用法解析
  TEZNKK3IfmPf 2023年11月15日 13 0

问题

stage1 = nn.Sequential(
    nn.Sequential(
        nn.Conv2d(16, 32, 3, 1, 1),
        nn.ReLU(),
        nn.Conv2d(32, 64, 3, 1, 1),
        nn.ReLU(),
    )

)
stage3 = nn.Sequential(
    nn.Conv2d(3, 16, 3, 1, 1),
    list(stage1.children())[0], #! 但是可以把list中的元素加进来
)

stage4 = nn.Sequential(
    nn.Conv2d(3, 16, 3, 1, 1),
    *list(stage1.children())[0], #! 解包序列后再将每个层加入进来
)

stage3和stage4都可以添加到nn.Sequential()中,二者的区别是什么?

方法

import torch
from torch import nn

stage1 = nn.Sequential(
    nn.Sequential(
        nn.Conv2d(16, 32, 3, 1, 1),
        nn.ReLU(),
        nn.Conv2d(32, 64, 3, 1, 1),
        nn.ReLU(),
    )

)

# stage2 = nn.Sequential(
#     nn.Conv2d(3, 16, 3, 1, 1),
#     list(stage1.children()), #! 不能把一个list加进来,因为list is not a Module subclass
# )
# print(stage2)

stage3 = nn.Sequential(
    nn.Conv2d(3, 16, 3, 1, 1),
    list(stage1.children())[0], #! 但是可以把list中的元素加进来
)
print(stage3)
'''stage3输出:
Sequential(
  (0): Conv2d(3, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
  (1): Sequential(
    (0): Conv2d(16, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (1): ReLU()
    (2): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (3): ReLU()
  )
)
'''

'''stage3与stage4的主要区别是:
- stage3将整个Sequential加入进来,
- 而stage4首先将Sequential解包而后再加入进来;
'''
stage4 = nn.Sequential(
    nn.Conv2d(3, 16, 3, 1, 1),
    *list(stage1.children())[0], #! 解包序列后再将每个层加入进来
)
print(stage4)

''' stage4输出:
Sequential(
  (0): Conv2d(3, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
  (1): Conv2d(16, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
  (2): ReLU()
  (3): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
  (4): ReLU()
)
'''
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年03月29日   35   0   0 pytorch
  I7JaHrFMuDsU   24天前   21   0   0 pytorch
  TEZNKK3IfmPf   2023年11月14日   17   0   0 pytorch
  TEZNKK3IfmPf   2023年11月15日   14   0   0 pytorch
TEZNKK3IfmPf