The CIFAR10 tutorial 1 might be a good starter, as it’s creating a new model.
The Conv2d docs 1 give you some information about the expected input arguments, such as in_channels, out_channels, and kernel_size.
For your use case it seems that that first conv layer should be defined as:
conv = nn.Conv2d(in_channels=?, out_channels=16, kernel_size=3)

The following layers would then use in_channels=16, since this is the number of channels in the output activation from the preceding layer.