Hello Everyone.
I have an understanding problem with Contrastive Learning and SimCLR framework.
The part of simclr I cannot understand is how you calculate the linear evaluation after you train your model with unlabeled dataset and finding the contrastive loss for every epoch you have set.
I read a lot of articles where they say about creating a Linear Classifier and train it to get the metrics(loss, accuracy etc.) you want. The training of Linear Classifier is the same as we train a classification model, for example:
for epoch in range (num_epochs):
trainCorrect = 0
#Initialize losses
batch_train_loss = 0.0
#Network Training
ImageClassifier.train()
for batch in tqdm(train_loader):
X, y = batch
X, y = X.to(device), y.to(device)
output = LinearClassifier(X)
train_loss = loss_fn(output, y)
batch_train_loss += train_loss.item()
optimizer.zero_grad()
train_loss.backward()
optimizer.step()
trainCorrect += (yhat.argmax(1) == y).type(torch.float).sum().item()
Or you need something else for the metrics?
Thanks a lot in advance.