tf.image.convert_image_dtype behaves differently between CPU and GPU when inputs are negative numbers 
Hi, @trickiwoo 

Aplogize for the delay and I was able to replicate the issue and it's returning different values for the same code on `CPU` and `GPU`, for your reference I have added [gist-file-tf2.11](https://colab.research.google.com/gist/gaikwadrahul8/097cea61a28081a64601a762e40903bb/-59704.ipynb), [gist-file-tf2.12.0rc0 ](https://colab.research.google.com/gist/gaikwadrahul8/d1a846e1a60c10eb1b4f806014427aa4/-59704-tensorflow-2-12-0rc0.ipynb) and [gist-file-tf-nightly-2.13.0.dev20230216](https://colab.research.google.com/gist/gaikwadrahul8/453761c41c9b0dd0bf84a207e3ed2035/-59704.ipynb) so we will have to dig more into this issue and we'll update you soon here, Thank you for noticing this issue. Thank you! Would this be undefined by the specification anyway? The [tf.image.convert_image_dtype](https://www.tensorflow.org/api_docs/python/tf/image/convert_image_dtype) documentation says floating-point values are expected to be in the range `[0, 1)`. If so, then I'd expect inconsistent behavior and perhaps a warning message for out-of-range values. Thanks for getting back to me! @gaikwadrahul8 @nrwahl2 
Yes, the input values are expected to be in the range [0, 1), but it seems that the CPU converts negative numbers to 180, and it doesn't make sense. It would be great if it throws exceptions or outputs 0 as the GPU does.  This issue has been automatically marked as stale because it has no recent activity. It will be closed if no further activity occurs. Thank you.
 Hi, @trickiwoo 

Apologize for the delay and I tried to execute the same code on CPU by passing `saturate=True` argument to `tf.image.convert_image_dtype()` and it's giving the same result as GPU and for your reference I have added gist file [here](https://colab.research.google.com/gist/SuryanarayanaY/5e193ed69f1cad5de8b0561dc05046d7/untitled55.ipynb) and by default value is `saturate=False` and you can refer [official documentation ](https://www.tensorflow.org/api_docs/python/tf/image/convert_image_dtype)

Could you please try from your end by passing `saturate=True` argument to `tf.image.convert_image_dtype()` and check whether is it giving the same result as GPU ? Thank you! Thanks for the detailed explanation. Yes, passing the `saturate=True` argument would be the proper usage. @trickiwoo 

Thank you for the confirmation and If you need any further assistance please let us know ? or Could you please confirm if this issue is resolved for you ? Please feel free to close the issue if it is resolved ? Thank you! 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/59704">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/59704">No</a>

<details><summary>Click to expand!</summary> 
 
 ### Issue Type

Bug

### Have you reproduced the bug with TF nightly?

Yes

### Source

source

### Tensorflow Version

2.13.0.dev20230204

### Custom Code

Yes

### OS Platform and Distribution

Ubuntu 20.04.4 LTS

### Mobile device

_No response_

### Python version

_No response_

### Bazel version

_No response_

### GCC/Compiler version

_No response_

### CUDA/cuDNN version

_No response_

### GPU model and memory

_No response_

### Current Behaviour?

```shell
tf.image.convert_image_dtype behaves differently between CPU and GPU when inputs are negative numbers. CPU produces weird outputs but doesn't raise warnings or exceptions.
```


### Standalone code to reproduce the issue

```shell
import tensorflow as tf

with tf.device("gpu"):

    x = tf.ones((10,10), dtype=tf.float32)*(-0.3)
    y = tf.image.convert_image_dtype(x, dtype=tf.uint8)
    print(y)

with tf.device("cpu"):

    x = tf.ones((10,10), dtype=tf.float32)*(-0.3)
    y = tf.image.convert_image_dtype(x, dtype=tf.uint8)
    print(y)
```


### Relevant log output

```shell
tf.Tensor(
[[0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0 0]], shape=(10, 10), dtype=uint8)
tf.Tensor(
[[180 180 180 180 180 180 180 180 180 180]
 [180 180 180 180 180 180 180 180 180 180]
 [180 180 180 180 180 180 180 180 180 180]
 [180 180 180 180 180 180 180 180 180 180]
 [180 180 180 180 180 180 180 180 180 180]
 [180 180 180 180 180 180 180 180 180 180]
 [180 180 180 180 180 180 180 180 180 180]
 [180 180 180 180 180 180 180 180 180 180]
 [180 180 180 180 180 180 180 180 180 180]
 [180 180 180 180 180 180 180 180 180 180]], shape=(10, 10), dtype=uint8)
```
</details>