AttributeError: 'NoneType' object has no attribute 'abs' when run example/run_bertology.py
Author: ThomasSYT
Pull request: no

# 🐛 Bug

## Information

Model I am using (Bert, XLNet ...):
Bert
Language I am using the model on (English, Chinese ...):
English
The problem arises when using:
* [ ] the official example scripts: (give details below)
example/run_bertology.py

The tasks I am working on is:
* [ ] an official GLUE/SQUaD task: (give the name)
GLUE mnli

## To reproduce

Steps to reproduce the behavior:
export TASK_NAME=mnli
python ./run_bertology.py     --data_dir $GLUE_DIR/$TASK_NAME     
                              --model_name bert-base-uncased     
                              --task_name $TASK_NAME     
                              --max_seq_length 128     
                              --output_dir ./tmp/$TASK_NAME/     
                              --try_masking 

<!-- If you have code snippets, error messages, stack traces please provide them here as well.
     Important! Use code tags to correctly format your code. See https://help.github.com/en/github/writing-on-github/creating-and-highlighting-code-blocks#syntax-highlighting
     Do not use screenshots, as they are hard to read and (more importantly) don't allow others to copy-and-paste your code.-->
After 2 Iterations:
Traceback (most recent call last):
  File "run_bertology.py", line 427, in <module>
    main()
  File "run_bertology.py", line 422, in main
    head_mask = mask_heads(args, model, eval_dataloader)
  File "run_bertology.py", line 180, in mask_heads
    args, model, eval_dataloader, compute_entropy=False, head_mask=new_head_mask
  File "run_bertology.py", line 105, in compute_heads_importance
    head_importance += head_mask.grad.abs().detach()
AttributeError: 'NoneType' object has no attribute 'abs'

I printed the 'head_mask' when the error occurs:
head_mask: tensor([[1., 0., 1., 1., 1., 1., 0., 0., 1., 0., 1., 1.],
        [1., 0., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0., 1.],
        [1., 1., 1., 1., 1., 1., 1., 1., 0., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1., 1., 1., 0., 1., 0., 0.],
        [0., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
        [1., 0., 1., 0., 1., 1., 0., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 0., 1., 1., 1., 0., 0., 1.],
        [1., 0., 1., 1., 0., 1., 0., 1., 1., 0., 1., 1.],
        [1., 0., 0., 1., 0., 0., 0., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1., 1., 1., 0., 1., 1., 0.]], device='cuda:0',
       grad_fn=<ViewBackward>)


## Expected behavior

<!-- A clear and concise description of what you would expect to happen. -->
At the 3 positions of tensor, it should be "requires_grad=True".
head_mask: tensor([[1., 1., 1., 1., 1., 1., 0., 0., 1., 0., 1., 1.],
        [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1., 1., 1., 0., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1., 1., 1., 0., 1., 1., 0.],
        [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1., 1., 1., 1., 0., 1., 1.],
        [1., 1., 1., 1., 1., 1., 0., 1., 1., 0., 1., 1.],
        [1., 0., 1., 1., 1., 0., 0., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1., 1., 1., 0., 1., 1., 0.]], device='cuda:0',
       requires_grad=True)

## Environment info
<!-- You can run the command `transformers-cli env` and copy-and-paste its output below.
     Don't forget to fill out the missing fields in that output! -->
     
- `transformers` version:2.8.0
- Platform:
- Python version:
- PyTorch version (GPU?):
- Tensorflow version (GPU?):1.15
- Using GPU in script?:yes
- Using distributed or parallel set-up in script?:


Comments:
I also have this error, anyone has the solution?