使用pytorch对深度学习网络进行增删改

  • Post author:
  • Post category:其他


class test(nn.Module):
    def __init__(self):
        super(test, self).__init__()
        self.conv = nn.Sequential(nn.Conv2d(3,3,kernel_size=3,stride=1),
                                 nn.Conv2d(3,4,kernel_size=3,stride=1))
        self.fc = nn.Sequential(nn.Linear(252 * 252 * 4, 10), nn.ReLU(), nn.Linear(10, 1))
    def forward(self, x):
        out = self.conv(x)
        out = out.flatten()
        out = self.fc(out)
        return out

(1)向网络中添加一层

如果在网络的卷积层的后面再加一个卷一层.

net.conv.add_module('lastconv', nn.Conv2d(4,4, kernel_size=1))

其中lastconv是加入卷积层的名字。

(2)删除网络中的某一层

例如把刚才加入的层删除。

net.conv.lastconv = nn.Sequential()

当然上面的方法是将原来那个卷积层不起作用,下面展示另一种方法。

net.conv = nn.Sequential(*list(net.conv.children())[:-1])

(3)修改某一层的卷积核

这个使用的方法和第一种删除某一层相似。例如将全连接最后一层修改。

net.fc[2] = nn.Linear(10, 5)



版权声明:本文为m0_50501767原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。