Hi,
I have loaded the pre-trained ResNet-50 model, and now I want to change the input and output channels of all layers. Not only the first or last layers. But maintaining the same model structure.
is there any way to do this?
Here is a simple example of what I want to do.
class CustomCNN(nn.Module):
def __init__(self):
super(MiniCustomCNN, self).__init__()
self.features = nn.Sequential(
nn.Conv2d(3, 6, (5, 5)),
nn.ReLU(),
nn.MaxPool2d((2, 2)),
nn.Conv2d(6, 8, (5, 5)),
nn.ReLU(),
nn.MaxPool2d((2, 2))
)
self.fc = nn.Sequential(
nn.Linear(200, 40),
nn.Linear(40, 10)
)
def forward(self, x):
x = self.features(x)
x = torch.flatten(x, 1)
x = self.fc(x)
return x
model = CustomCNN()
# To do something...
The model summary results I am aiming for…
CustomCNN(
(features): Sequential(
(0): Conv2d(6, 12, kernel_size=(5, 5), stride=(1, 1))
(1): ReLU()
(2): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), padding=0, dilation=1, ceil_mode=False)
(3): Conv2d(12, 16, kernel_size=(5, 5), stride=(1, 1))
(4): ReLU()
(5): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), padding=0, dilation=1, ceil_mode=False)
)
(fc): Sequential(
(0): Linear(in_features=400, out_features=80, bias=True)
(1): Linear(in_features=80, out_features=10, bias=True)
)
)
Simply, I want to double(or customize) the input and output channels from the pre-build model.
Any help will be appreciated.
Thanks.