Hey @algol1
I did something like this to help distinguish between the encoder and the projector.
resnet18 = models.resnet18(
    pretrained=False,
    num_classes=resnet_dim)
encoder = resnet18
projection = nn.Sequential(
    nn.Linear(resnet_dim, hidden_dim),
    nn.ReLU(),
    nn.Linear(hidden_dim, out_dim)
)

This will help you do the evaluation on the SimCLR representation properly.