Question About Model.eval() and when to unfreeze models?

I have a couple questions about things that I still haven’t wrapped my head around.

  1. Model.eval() <- What’s the purpose of evaluating a model that is populated with random weights?

  2. I heard that NN.functional.relu is the same and NN.relu but it is built in C so it runs faster. Is that true and also I’m having no luck implementing it in my sequence function

  3. Is there a rule of thumb or starting point on when we should unfreeze our pre trained model and how many layers to unfreeze?