TFLite model produces wrong output after fusion optimization
I was able to reproduce this in TF 2.14 and nightly as well. Please find this [gist](https://colab.research.google.com/gist/pjpratik/3fa5fdf7a56b481f61fd7698e2b6ed50/61967.ipynb).

@pkgoogle Could you please look into this issue?

Thanks. I was able to reproduce with the same gist, @abattery, can you please take a look? Thanks.
### 1. System information

- OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Linux Ubuntu 20.04
- TensorFlow installation (pip package or built from source): pip
- TensorFlow library (version, if pip package or github SHA, if built from source): 2.15.0-dev20230924

### 2. Code
```
import tensorflow as tf

class Model(tf.keras.Model):

  def __init__(self):
    super(Model, self).__init__(name="model")
    self.w1 = tf.Variable([[0.], [0.5]])
    self.b1 = tf.Variable([-4.])
    self.r = tf.Variable([-7.])
    self.c = tf.Variable(1.)
    self.m1 = tf.Variable([-4.])
    self.m2 = tf.Variable([1.])

  def call(self, x):
    x = x + self.m1
    x2 = tf.math.multiply(x, self.r)
    x3 = tf.linalg.matmul(x2, self.w1)
    x4 = tf.math.add(x3, self.b1)
    x5 = tf.math.multiply(x4, self.r)
    x6 = tf.math.add(x5, self.m2)
    x7 = tf.math.multiply(x6, self.r)
    return x7

# Initializing the model
m = Model()

# Inputs to the model
x = tf.constant([[2., -3.]], shape=[1, 2], dtype=tf.float32)

# Call model
y = m(x)
print('expected model output:')
print(y)


converter = tf.lite.TFLiteConverter.from_keras_model(m)
tflite_model = converter.convert()

def _evaluateTFLiteModel(tflite_model, input_data):
    interpreter = tf.lite.Interpreter(model_content=tflite_model)
    interpreter.allocate_tensors()
    input_details = interpreter.get_input_details()
    output_details = interpreter.get_output_details()

    for i in range(len(input_data)):
        interpreter.set_tensor(input_details[i]['index'], input_data[i])
    interpreter.invoke()
    output_data = [interpreter.get_tensor(output_details[i]['index'])
                   for i in range(len(output_details))]
    return output_data


actual_value = _evaluateTFLiteModel(tflite_model,[x])
print('tflite model output:')
print(actual_value[0])
```

### 3. Failure after conversion
Output:
```
expected model output:
tf.Tensor([[997.5]], shape=(1, 1), dtype=float32)
tflite model output:
[[311.5]]
```

P.S. It seems multiple optimizations are triggered, including `FuseAddAndFullyConnected`, `FuseMulAndFullyConnected`, `FuseFullyConnectedAndMul`, `FuseFullyConnectedAndAdd`. It's unclear which one of them causes the bug and further inspection is needed.