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:我也这么认为<代码>深度复制工作正常。也许这是最简单的方法,而且也很干净!谢谢