Repository: pytorch
Issue: Save LocalResponceNorm as a single aten node when convert a pytorch model to jit model
Labels: oncall: jit,triaged

## 🚀 Feature
Suppose we have a model using LRN layer. When using torch.jit.trace(model, input) to convert it to jit model, I see it will be translated to a lot of subtle operations like, 
```
 #%input4.1 is the tensor to be normalized.
  %386 : Tensor = aten::mul(%input4.1, %input4.1) # code/fingerprint_v1.jit.py:183:24
  %div.1 : Tensor = aten::unsqueeze(%386, %361) # code/fingerprint_v1.jit.py:183:8
  %389 : int = aten::size(%input4.1, %353) # code/fingerprint_v1.jit.py:184:30
  %390 : Tensor = prim::NumToTensor(%389) # code/fingerprint_v1.jit.py:184:9
  %392 : int = aten::Int(%390) # code/fingerprint_v1.jit.py:185:9
  %394 : int = aten::Int(%390) # code/fingerprint_v1.jit.py:186:9
  %396 : int = aten::size(%input4.1, %361) # code/fingerprint_v1.jit.py:187:30
  %397 : Tensor = prim::NumToTensor(%396) # code/fingerprint_v1.jit.py:187:9
  %399 : int = aten::Int(%397) # code/fingerprint_v1.jit.py:188:9
  %401 : int = aten::Int(%397) # code/fingerprint_v1.jit.py:189:9
  %403 : int = aten::size(%input4.1, %358) # code/fingerprint_v1.jit.py:190:30
  %404 : Tensor = prim::NumToTensor(%403) # code/fingerprint_v1.jit.py:190:9
  %406 : int = aten::Int(%404) # code/fingerprint_v1.jit.py:191:9
  %408 : int = aten::Int(%404) # code/fingerprint_v1.jit.py:192:9
  %410 : int = aten::size(%input4.1, %351) # code/fingerprint_v1.jit.py:193:30
  %411 : Tensor = prim::NumToTensor(%410) # code/fingerprint_v1.jit.py:193:9
  %413 : int = aten::Int(%411) # code/fingerprint_v1.jit.py:194:9
  %419 : int[] = prim::ListConstruct(%394, %361, %401, %408, %418)
  %input5.1 : Tensor = aten::view(%div.1, %419) # code/fingerprint_v1.jit.py:195:11
  %422 : int[] = prim::ListConstruct(%353, %353, %353, %353, %358, %358)
  %div0.1 : Tensor = aten::constant_pad_nd(%input5.1, %422, %353) # code/fingerprint_v1.jit.py:196:9
  %426 : int[] = prim::ListConstruct(%425, %361, %361)
  %427 : int[] = prim::ListConstruct(%361, %361, %361)
  %428 : int[] = prim::ListConstruct(%353, %353, %353)
  %432 : Tensor = aten::avg_pool3d(%div0.1, %426, %427, %428, %363, %367, %431) # code/fingerprint_v1.jit.py:197:9
  %div1.1 : Tensor = aten::squeeze(%432, %361) # code/fingerprint_v1.jit.py:198:9
  %440 : int[] = prim::ListConstruct(%392, %399, %406, %413)
  %div2.1 : Tensor = aten::view(%div1.1, %440) # code/fingerprint_v1.jit.py:199:9
  %444 : Tensor = aten::mul(%div2.1, %443) # code/fingerprint_v1.jit.py:200:19
  %446 : Tensor = aten::add(%444, %445, %361) # code/fingerprint_v1.jit.py:200:9
  %div3.1 : Tensor = aten::pow(%446, %448) # code/fingerprint_v1.jit.py:201:9
  %input6.1 : Tensor = aten::div(%input4.1, %div3.1) # code/fingerprint_v1.jit.py:202:11
```
I hope this can be combined into a single operation like other normalization operation, e.g. aten::batch_norm2d

## Motivation

1. We loss the information of LRN layer when we translate our model into jit model. No class information of LRN is remained after the translation. I believe this should not be happen.
2. The seperate layers bring problems when trying to build Tensor RT engine using the information in jit model, as LRN layer can be easily added to Tensor RT network, but aten::constant_pad_nd (n=3) cannot.

## Pitch
torch.jit.trace(model) should make a graph like this:
```
...
%input6.1 : Tensor = aten::local_response_norm(%input4.1, %param1, %param2, %param3, %param4)
```

## Alternatives
At least the information of "it is a LocalResponseNorm layer" should be remained, like this:
`
%21 : ClassType<LRN> = prim::GetAttr[name="local_response_norm"](%self.1)
`

## Additional context

![screenshot](https://user-images.githubusercontent.com/34331938/72580087-ed816c80-3915-11ea-80c0-66d14e4b5661.png)


cc @suo