Hi guys,
I was wondering if there are many convolutional layers (conv1 --> conv2 ). How can we get the input channels parameter for the conv2 from the conv1 output channel?
class MyModel(nn.Module):
def __init__(self, in_ch, num_features, out_ch2):
super(MyModel, self).__init__()
self.conv1 = nn.Conv2D(in_channels,num_features)
self.conv2 = nn.Conv2D(in_channnels_from_out_channels_of_conv1,out_ch2)
Can I get the out_channels from the conv1 layer and use it as in_ch for conv2?
Yes, you can directly access this property via:
self.conv1.out_channels
For your code snippet, this should work:
self.conv1 = nn.Conv2D(in_channels,num_features)
self.conv2 = nn.Conv2D(self.conv1.out_channels,out_ch2)
1 Like
@ptrblck Thanks, I dont think I framed my question correctly earlier.
Actually what I am looking for is something this
# Class for a single Block
class SingleBlock(nn.Module):
def __init__(self, in_channels, num_channels, drop_out=0.2):
super(SingleBlock, self).__init__()
self.conv = conv3X3(in_channels, num_channels)
# self.outchannels = self.conv.out_channels
# def get_out_channels(self):
# return _outchannels
def forward(self, x):
concat = x
out = self.conv(out)
out = torch.cat((out,concat), axis=1)
## Only while Q.C. to see output shape
# out = self.lrelu(out)
return out
# Q. C. single SingleBlock
qc_toggle = 1
if qc_toggle == 1:
# print the model summary (Not exactly great)
temp_block = DenseBlock(3,32)
print(temp_block)
When I make this network I want to access the out_channels in this (after the torch.cat) so that I can use it in some other place.
Can I do some get function or is there any property to get the out_channels in this network?