Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在torch中创建nn.Sequential的副本?_Python_Neural Network_Pytorch - Fatal编程技术网

Python 如何在torch中创建nn.Sequential的副本?

Python 如何在torch中创建nn.Sequential的副本?,python,neural-network,pytorch,Python,Neural Network,Pytorch,我正在尝试创建网络的副本。例如,下面是做同样事情的最简单方法- net = nn.Sequential( nn.Conv2d(16, 32, 3, stride=2), nn.ReLU(), nn.Conv2d(32, 64, 3, stride=2), nn.ReLU(), ) net_copy = nn.Sequential( nn.Conv2d(16, 32, 3, stride=2),

我正在尝试创建网络的副本。例如,下面是做同样事情的最简单方法-

net = nn.Sequential(
        nn.Conv2d(16, 32, 3, stride=2),
        nn.ReLU(),
        nn.Conv2d(32, 64, 3, stride=2),
        nn.ReLU(),
    )

net_copy = nn.Sequential(
        nn.Conv2d(16, 32, 3, stride=2),
        nn.ReLU(),
        nn.Conv2d(32, 64, 3, stride=2),
        nn.ReLU(),
    )
然而,重新定义网络并不是件好事。我尝试了以下方法,但没有成功-

  • net\u copy=nn.Sequential(net)
    :在这种方法中,
    net\u copy
    似乎只是
    net
    的一个共享指针
  • net\u copy=nn.Sequential(*net.modules())
    :在这种方法中,
    net\u copy
    包含更多的层
  • 最后,我用下面的方法累了
    deepcopy
    ,效果很好-

    net_copy = deepcopy(net)
    

    然而,我想知道这是否是正确的方法。我认为它很好,因为它可以工作。

    你想保持重量还是想要一个具有相同架构的新模型?@skinny_func:我想要一个具有相同架构的新模型。我猜
    deepcopy
    也在做同样的事情。
    deepcopy
    应该可以。您还可以创建一个函数,在创建网络实例后将参数和缓冲区从一个网络复制到另一个网络。@SzymonMaszke:我也这么认为<代码>深度复制工作正常。也许这是最简单的方法,而且也很干净!谢谢,你想保持重量还是想要一个具有相同结构的新模型?@skinny_func:我想要一个具有相同结构的新模型。我猜
    deepcopy
    也在做同样的事情。
    deepcopy
    应该可以。您还可以创建一个函数,在创建网络实例后将参数和缓冲区从一个网络复制到另一个网络。@SzymonMaszke:我也这么认为<代码>深度复制工作正常。也许这是最简单的方法,而且也很干净!谢谢