Using .In_feature for fetching the input to conv2d layer inin FCN_ResNet101 model

I have my model defined this way:
def initialize_model(model_name, num_classes, feature_extract, use_pretrained=True):
# Initialize these variables which will be set in this if statement. Each of these
# variables is model specific.
model_ft = None
input_size = 0

model_ft = models.segmentation.fcn_resnet101(pretrained=use_pretrained)
set_parameter_requires_grad(model_ft, feature_extract)

# Handle the auxilary net
num_ftrs = model_ft.aux_classifier[4].in_features
model_ft.aux_classifier[4] = nn.Conv2d(num_ftrs, num_classes, kernel_size=(1, 1), stride=(1, 1))

# Handle the primary net 
num_ftrs = model_ft.classifier[4].in_features
model_ft.classifier[4] = nn.Conv2d(num_ftrs, num_classes, kernel_size=(1, 1), stride=(1, 1))
input_size = 224 #?

return model_ft, input_size

but I get this error:

AttributeError Traceback (most recent call last)
in
1 # Initialize the model for this run
----> 2 model_ft, input_size = initialize_model(model_name, num_classes, feature_extract, use_pretrained=True)
3
4 # Print the model we just instantiated
5 print(model_ft)

in initialize_model(model_name, num_classes, feature_extract, use_pretrained)
10
11 # Handle the auxilary net
—> 12 num_ftrs = model_ft.aux_classifier[4].in_features
13 model_ft.aux_classifier[4] = nn.Conv2d(num_ftrs, num_classes, kernel_size=(1, 1), stride=(1, 1))
14

~\Anaconda3\lib\site-packages\torch\nn\modules\module.py in getattr(self, name)
537 return modules[name]
538 raise AttributeError("’{}’ object has no attribute ‘{}’".format(
–> 539 type(self).name, name))
540
541 def setattr(self, name, value):

AttributeError: ‘Conv2d’ object has no attribute ‘in_features’

The reason I opted using in-features was that when running this part of the code:

model_ft, hist = train_model(model_ft, dataloaders_dict, criterion, optimizer_ft, num_epochs=num_epochs, has_aux = True)

I got this error:

~\Anaconda3\lib\site-packages\torch\nn\modules\conv.py in forward(self, input)
336 _pair(0), self.dilation, self.groups)
337 return F.conv2d(input, self.weight, self.bias, self.stride,
–> 338 self.padding, self.dilation, self.groups)
339
340

RuntimeError: Given groups=1, weight of size 4 256 1 1, expected input[4, 512, 28, 28] to have 256 channels, but got 512 channels instead.

I assuemd I need to get the input features to the layers I am changing their output through in_features. Before, I copied the layer and only changed the number of classes argument.

Could you please help me out if you encountered similar issues or have an idea what is going on in my case? any help is immensely appreciated.

.in_features defines the input features of e.g. nn.Linear, while nn.Conv2d uses .in_channels to define the number of input channels.
Could you try this attribute and let me know, if this works for you?