1. What is a “hook” in PyTorch?
    2. Which layer does CAM use the outputs of?
    3. Why does CAM require a hook?
    4. Write a hook that stores the activations of a given layer in a model (without peeking, if possible).
    5. Why do we call eval before getting the activations? Why do we use ?
    6. Use torch.einsum to compute the “dog” or “cat” score of each of the locations in the last activation of the body of the model.
    7. How do you check which order the categories are in (i.e., the correspondence of index->category)?
    8. What is a “context manager”? What special methods need to be defined to create one?
    9. Why can’t we use plain CAM for the inner layers of a network?
    10. Why do we need to register a hook on the backward pass in order to do Grad-CAM?
    11. Why can’t we call output.backward() when is a rank-2 tensor of output activations per image per class?
    1. Create a notebook like this one, but for NLP, and use it to find which words in a movie review are most significant in assessing the sentiment of a particular movie review.