Repository: pytorch
Issue: [JIT] `Linear` + `BatchNorm2d` Trigger Inconsistency between Eager Mode and JIT
Labels: oncall: jit

### 🐛 Describe the bug

The following program succeeded in eager mode, but threw a runtime error in `optimize_for_inference`. The inconsistency appears only if the two operators `Linear` and `BatchNorm2d` are used together. If we use a single operator, the program works fine.

```python
import torch

class Model(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.Linear = torch.nn.Linear(1, 3)
        self.BatchNorm = torch.nn.BatchNorm2d(2)
    
    def forward(self, input):
        v1 = self.Linear(input)
        v2 = self.BatchNorm(v1)
        return v2

x = torch.rand([12, 2, 7, 1])
fn = Model()

fn(x)
print("Eager mode ... OK!")

exported = torch.jit.trace(fn, x)
exported = torch.jit.optimize_for_inference(exported) # works w/o this line
print("JIT ... OK!")

"""
Eager mode ... OK!
Traceback (most recent call last):
  File "model.py", line 21, in <module>
    exported = torch.jit.optimize_for_inference(exported)
  File "python3.10/site-packages/torch/jit/_freeze.py", line 215, in optimize_for_inference
    mod = freeze(mod.eval(), preserved_attrs=other_methods)
  File "python3.10/site-packages/torch/jit/_freeze.py", line 117, in freeze
    run_frozen_optimizations(out, optimize_numerics, preserved_methods)
  File "python3.10/site-packages/torch/jit/_freeze.py", line 166, in run_frozen_optimizations
    torch._C._jit_pass_optimize_frozen_graph(mod.graph, optimize_numerics)
RuntimeError: The size of tensor a (3) must match the size of tensor b (2) at non-singleton dimension 0
"""
```

### Versions

<details><summary> <b> Environment </b> <i> [Click to expand] </i></summary>

```
PyTorch version: 2.0.0.dev20230119+cu117
Is debug build: False
CUDA used to build PyTorch: 11.7
ROCM used to build PyTorch: N/A

OS: Ubuntu 22.04.1 LTS (x86_64)
GCC version: (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0
Clang version: 11.1.0-6
CMake version: version 3.22.1
Libc version: glibc-2.35

Python version: 3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0] (64-bit runtime)
Python platform: Linux-5.15.0-56-generic-x86_64-with-glibc2.35
Is CUDA available: True
CUDA runtime version: 11.6.124
CUDA_MODULE_LOADING set to: LAZY
GPU models and configuration: 
GPU 0: NVIDIA GeForce RTX 3090
GPU 1: NVIDIA GeForce RTX 3090
GPU 2: NVIDIA GeForce RTX 3090

Nvidia driver version: 515.86.01
cuDNN version: Probably one of the following:
/usr/lib/x86_64-linux-gnu/libcudnn.so.8.4.1
/usr/lib/x86_64-linux-gnu/libcudnn_adv_infer.so.8.4.1
/usr/lib/x86_64-linux-gnu/libcudnn_adv_train.so.8.4.1
/usr/lib/x86_64-linux-gnu/libcudnn_cnn_infer.so.8.4.1
/usr/lib/x86_64-linux-gnu/libcudnn_cnn_train.so.8.4.1
/usr/lib/x86_64-linux-gnu/libcudnn_ops_infer.so.8.4.1
/usr/lib/x86_64-linux-gnu/libcudnn_ops_train.so.8.4.1
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True

Versions of relevant libraries:
[pip3] numpy==1.21.5
[pip3] pytorch-triton==2.0.0+0d7e753227
[pip3] torch==2.0.0.dev20230119+cu117
[pip3] torchaudio==2.0.0.dev20230118+cu117
[pip3] torchvision==0.15.0.dev20230118+cu117
[conda] blas                      1.0                         mkl  
[conda] cudatoolkit               11.3.1               h2bc3f7f_2  
[conda] mkl                       2021.4.0           h06a4308_640  
[conda] mkl-service               2.4.0            py39h7f8727e_0  
[conda] mkl_fft                   1.3.1            py39hd3c417c_0  
[conda] mkl_random                1.2.2            py39h51133e4_0  
[conda] numpy                     1.21.5           py39he7a7128_1  
[conda] numpy-base                1.21.5           py39hf524024_1  
[conda] numpydoc                  1.2                pyhd3eb1b0_0  
[conda] torch                     1.14.0a0+gitce2f870          pypi_0    pypi
```

</details>

cc @EikanWang @jgong5 @wenzhe-nrv @sanchitintel