hahah Thanks for your help, sure I will be more carefull about expletives!
So to answer myself:
ResNet18 layer0 (Conv2d) inputs RGB images(3 channels) and outputs 64 channels. Thats why conv1.weight tensor is 64 filters of 3x7x7 (or 64 rgb 7x7 filters), as convolutions make one filter for each output channel per input channel.
In other layers, weight tensor will have, for example, a shape like 64,64,3,3 (in layer1[0]: conv1 and conv2 attribute) and that means 64 filters with 64 channels with size 3x3, making that 4096 3x3 b/w normalized filters.
So to summarize the number of filters in a single Conv2d = number of output channels * number of input channels. And filters will have the same number of channels as input channels in a Conv2d (if input channels = 3 you can make RGB filters joining all in_channels_groups from .weight attribute and thus dividing by 3 that number of filters)
Thanks a lot!
PD: To access even deeper blocks, attribute .convX is “skipped”, for example in ResNet18:
filter = model_conv.layer2[0].downsample[0].weight.clone()
Gives you Conv2d weight torch containing 128 filters with 64 channels of size 1x1