DequanWang / tent

ICLR21 Tent: Fully Test-Time Adaptation by Entropy Minimization
https://arxiv.org/abs/2006.10726
MIT License
355 stars 45 forks source link

How do the outputs change? #23

Open yarinbar opened 10 months ago

yarinbar commented 10 months ago

According to the code (and assuming that STEPS = 1, i dont understand how the outputs change after the adaptation:

def forward(self, x):
    if self.episodic:
        self.reset()

    for _ in range(self.steps):
        outputs = forward_and_adapt(x, self.model, self.optimizer)
    return outputs

@torch.enable_grad()  # ensure grads in possible no grad context for testing
def forward_and_adapt(x, model, optimizer):
    """Forward and adapt model on batch of data.

    Measure entropy of the model prediction, take gradients, and update params.
    """
    # forward
    outputs = model(x)
    # adapt
    loss = softmax_entropy(outputs).mean(0)
    loss.backward()
    optimizer.step()
    optimizer.zero_grad()
    return outputs

judging by the code, you return the original outputs however they do change somehow, how?