在 torch.nn.Sequential 中重新排列神经网络层

Rearrange neural network layers in torch.nn.Sequential

我期待找到一种重新排列顺序的方法,因为我正在尝试构建一个可逆的卷积神经网络,并且我有很多层,我只想颠倒顺序中层的顺序。 例如

self.features.append(nn.Conv2d(1, 6, 5))
self.features.append(nn.LeakyReLU())
self.features = nn.Sequential(*self.features)

然后我只想反转它,首先进行激活,然后进行卷积。 我知道这个示例很简单,但就我而言,我有很多层,我无法通过编写反向路径来完成。

试试这个:

nn.Sequential(*reversed([layer for layer in original_sequential]))

例如:

>>> original_sequential = nn.Sequential(nn.Conv2d(1,6,5), nn.LeakyReLU())
>>> original_sequential
Sequential(
  (0): Conv2d(1, 6, kernel_size=(5, 5), stride=(1, 1))
  (1): LeakyReLU(negative_slope=0.01)
)
>>> nn.Sequential(*reversed([layer for layer in original_sequential]))
Sequential(
  (0): LeakyReLU(negative_slope=0.01)
  (1): Conv2d(1, 6, kernel_size=(5, 5), stride=(1, 1))
)