torch搭建网络,模块是否可以重复调用?

本文介绍了一种自定义的卷积神经网络结构MyNetk,该网络包含多个卷积层,通过逐步下采样提取图像特征。文章详细展示了网络的具体实现,并讨论了网络中模块的重复使用限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考: https://blog.youkuaiyun.com/rocking_struggling/article/details/108357089

class MyNetk(t.nn.Module):
    def __init__(self):
        super(MyNetk,self).__init__()
        # print("卷积网络")
        self.conv1 = nn.Sequential(
          nn.Conv2d(
            in_channels = 3,  #(, 64, 64, 3)
            out_channels = 16,
            kernel_size = 3,
            stride = 1,
            padding = 1
          ),   ##( , 64, 64, 16)
          nn.ReLU(),
          nn.MaxPool2d(kernel_size = 2)
        )  ##( , 32, 32, 16)
        self.conv2 = nn.Sequential(
          nn.Conv2d(16,32,3,1,1),
          nn.ReLU(),
          nn.MaxPool2d(2)
        )
        self.conv3 = nn.Sequential(
          nn.Conv2d(32,64,3,1,1),
          nn.ReLU(),
          nn.MaxPool2d(2)
        )
        self.conv4 = nn.Sequential(
          nn.Conv2d(64,64,3,1,1),
          nn.BatchNorm2d(64),
          nn.BatchNorm2d(64),
          nn.ReLU(),
        )
    def forward(self, x):
        # print("前向传播")
        x = self.conv1(x)
        x = self.conv2(x)
        x = self.conv3(x)
        x = self.conv4(x)
        x = self.conv4(x)
        x = self.conv4(x)
        x = self.conv4(x)
        return x
if __name__ == '__main__':
    net=MyNetk()
    print(net)
    for name, param in net.named_parameters():
        print(name)

torch 网络中的模块不可以重复调用,网络的参数的数目在初始化时已经固定住了。如 之定义了一个conv4

但是组件中的其他重复模块是可以创建不同参数的。如conv4中nn.batchnorm2d的模块分别为4.1、4.2

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值