Different Behavior of tf.raw_ops.AdjustSaturation with jit_compile=True
Hi @zoux1a ,

I have replicated the reported behaviour with `jit_compile=True `and with` jit_compile = False` as well. It seems not related to `jit_compile` issue.  Attached [gist](https://colab.sandbox.google.com/gist/SuryanarayanaY/ceca6be7b2efcf2529589b212694af29/62265_gpu-2-14v.ipynb) for reference. Hi @zoux1a ,

I noticed an issue here.

Inside the call function you are generating the value for `images`, which in each calls generates different random values( because seed gets changed every call)  which makes the output different for obvious reason.

I have done the changes to shift `images` to outside the call function to ensure same inputs. I ran 10 experiments with different inputs of x & `images` and printed the `reduce_sum` results of `no_op_res` and `op_res` which outputs almost same results with minor precision differences which is expected with XLA compilation.

Please refer attached [gist](https://colab.sandbox.google.com/gist/SuryanarayanaY/14200d88789f860749ca900113334864/62265_final.ipynb) for the experiments. This issue is stale because it has been open for 7 days with no activity. It will be closed if no further activity occurs. Thank you. This issue was closed because it has been inactive for 7 days since being marked as stale. Please reopen if you'd like to work on this further. Are you satisfied with the resolution of your issue?
<a href="https://docs.google.com/forms/d/e/1FAIpQLSfaP12TRhd9xSxjXZjcZFNXPGk4kc1-qMdv3gc6bEP90vY1ew/viewform?entry.85265664=Yes&entry.2137816233=https://github.com/tensorflow/tensorflow/issues/62265">Yes</a>
<a href="https://docs.google.com/forms/d/e/1FAIpQLSfaP12TRhd9xSxjXZjcZFNXPGk4kc1-qMdv3gc6bEP90vY1ew/viewform?entry.85265664=No&entry.2137816233=https://github.com/tensorflow/tensorflow/issues/62265">No</a>

### Issue type

Bug

### Have you reproduced the bug with TensorFlow Nightly?

No

### Source

source

### TensorFlow version

2.14.0

### Custom code

Yes

### OS platform and distribution

Ubuntu 22.04.3 LTS (x86_64)

### Mobile device

_No response_

### Python version

_No response_

### Bazel version

_No response_

### GCC/compiler version

_No response_

### CUDA/cuDNN version

11.8

### GPU model and memory

GPU 0: NVIDIA GeForce RTX 2070 GPU 1: NVIDIA GeForce RTX 2070 GPU 2: NVIDIA GeForce RTX 2070 GPU 3: NVIDIA GeForce RTX 2070

### Current behavior?

When the **tf.raw_ops.AdjustSaturation** operation is invoked within a tf.function with JIT compilation enabled (jit_compile=True), it produces different results compared to the same operation called without JIT compilation. This inconsistency is observed when the code is executed on a **GPU** device.

### Standalone code to reproduce the issue

```shell
import tensorflow as tf
import traceback

def replace_special_values(tensor):
    # Convert tensor to tf.float32 if it's not a supported dtype
    supported_dtypes = [tf.float16, tf.float32, tf.float64, tf.bfloat16]
    if tensor.dtype not in supported_dtypes:
        original_dtype = tensor.dtype
        tensor = tf.cast(tensor, tf.float32)
    else :
        original_dtype = None
    
    # Replace NaNs with zeros
    tensor = tf.where(tf.math.is_nan(tensor), tf.zeros_like(tensor), tensor)
    
    # Replace positive infinities with a large number (e.g., 1e30)
    tensor = tf.where(tf.math.is_inf(tensor), 100, tensor)
    
    # Replace negative infinities with a small number (e.g., -1e30)
    tensor = tf.where(tf.math.is_inf(tensor) & tf.math.less(tensor, 0), -100, tensor)
    
    # Convert tensor back to its original dtype
    if original_dtype is not None :
        tensor = tf.cast(tensor, original_dtype)
    return tensor

class Network(tf.Module):
    def __init__(self):
        super().__init__()

    @tf.function(jit_compile=True)
    def __call__(self, x):
      
      x = tf.raw_ops.AdjustSaturation(scale=x, images=tf.random.normal([9, 10, 3], dtype=tf.float32))
      return x

m = Network()
inp = {
    "x": tf.random.normal([], dtype=tf.float32),
}

with tf.device('/GPU:0'):
    tf.config.run_functions_eagerly(True)
    no_op_res = m(**inp)
    tf.config.run_functions_eagerly(False)
    with tf.device('/GPU:0'):
        op_res = m(**inp)
    no_op_res = replace_special_values(no_op_res)
    op_res = replace_special_values(op_res)
    tf.debugging.assert_near(tf.cast(no_op_res, tf.float64), tf.cast(op_res, tf.float64), atol=0.001, rtol=0.001)
```


### Relevant log output

```shell
File "/home/guihuan/LLM/results/tf-2/2023-10-22-20-21/test.py", line 50, in <module>
    tf.debugging.assert_near(tf.cast(no_op_res, tf.float64), tf.cast(op_res, tf.float64), atol=0.001, rtol=0.001)
  File "/home/guihuan/.conda/envs/night/lib/python3.9/site-packages/tensorflow/python/util/traceback_utils.py", line 153, in error_handler
    raise e.with_traceback(filtered_tb) from None
  File "/home/guihuan/.conda/envs/night/lib/python3.9/site-packages/tensorflow/python/ops/control_flow_assert.py", line 102, in Assert
    raise errors.InvalidArgumentError(
tensorflow.python.framework.errors_impl.InvalidArgumentError: Expected 'tf.Tensor(False, shape=(), dtype=bool)' to be true. Summarized data: b''
b'x and y not equal to tolerance rtol = tf.Tensor(0.001, shape=(), dtype=float64), atol = tf.Tensor(0.001, shape=(), dtype=float64)'
b'x (shape=(9, 10, 3) dtype=float64) = '
0.0, 0.653150737285614, 0.7379282116889954, ...
b'y (shape=(9, 10, 3) dtype=float64) = '
0.0, 0.05600351840257645, 0.007689270656555891, ...
```
