weighted_metrics argument for compile() doesn't account for weights
It seems that some normalization is applied to weighted_metrics that is not applied to the losses. So if the same function is passed to loss and weighted_metrics, it seems the resulting values will be same except for a scale/shift. 

Since in my example, the same weight was applied to every sample, the scaling effect of the weight is only seen in the loss, and the "weighted_metric" is equal to the unweighted "metric". 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/60152">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/60152">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.12.0-dev20221213

### Custom Code

Yes

### OS Platform and Distribution

_No response_

### Mobile device

_No response_

### Python version

3.7.6

### Bazel version

_No response_

### GCC/Compiler version

_No response_

### CUDA/cuDNN version

_No response_

### GPU model and memory

_No response_

### Current Behaviour?

```shell
When using weighted_metrics, values that would be expected with no weighting are seen.

I expected that when I use sample_weight in fit() and pass the same function to the "metrics" and "weighted_metrics" in compile(), the scores would differ, but they are the same.
```


### Standalone code to reproduce the issue

```shell
import os
# os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
import numpy as np
import tensorflow as tf

(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()

# add channel axis
x_train = x_train[..., np.newaxis]
x_test = x_test[..., np.newaxis]

# subsample
train_idx = np.random.choice(len(x_train), 1000, replace=0)
test_idx = np.random.choice(len(x_test), 1000, replace=0)
x_train = x_train[train_idx]
x_test = x_test[test_idx]

# convert 1-hot
y_train = tf.one_hot(y_train[train_idx], 10)
y_test = tf.one_hot(y_test[test_idx], 10)

# define the model
def get_model():
    model = tf.keras.Sequential([
        tf.keras.layers.Input((28, 28, 1)),
        tf.keras.layers.Conv2D(32, (3, 3), activation='relu'),
        tf.keras.layers.Flatten(),
        tf.keras.layers.Dense(32, activation='relu'),
        tf.keras.layers.Dense(10, activation='softmax')
    ])
    return model

##################### first, no weighting #####################

# initialize model
model = get_model()

# compile
model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['categorical_crossentropy'],
              weighted_metrics=['categorical_crossentropy'])

# train the model
history = model.fit(x_train, y_train,
                    validation_data = (x_train, y_train),
                    epochs=5,
                    steps_per_epoch=5,
                    verbose=0)
h = history.history
print('No weighting:')
print('final_loss:',h['loss'][-1])
print('final_categorical_crossentropy ():',h['categorical_crossentropy'][-1])
print('final_weighted_categorical_crossentropy ():',h['weighted_categorical_crossentropy'][-1])



##################### add weights #####################

# categorical_crossentropy should differ from weighted_categorical_crossentropy



# define sample weights
sample_weights = np.ones((len(x_train), 1))*2
val_sample_weights = np.ones((len(x_test), 1))*2

# initialize model
model = get_model()

# compile
model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['categorical_crossentropy'],
              weighted_metrics=['categorical_crossentropy'])

# train the model
history = model.fit(x_train, y_train,
                    sample_weight = sample_weights,
                    validation_data = (x_train, y_train, val_sample_weights),
                    epochs=5,
                    steps_per_epoch=5,
                    verbose=0)
h = history.history
print('\nWith Weighting:')
print('final_loss:',h['loss'][-1])
print('final_categorical_crossentropy ():',h['categorical_crossentropy'][-1])
print('final_weighted_categorical_crossentropy ():',h['weighted_categorical_crossentropy'][-1])
```


### Relevant log output

```shell
No weighting:
final_loss: 2.071871042251587
final_categorical_crossentropy (): 2.071871042251587
final_weighted_categorical_crossentropy (): 2.071871042251587

With Weighting:
final_loss: 3.7742838859558105
final_categorical_crossentropy (): 1.8871419429779053
final_weighted_categorical_crossentropy (): 1.8871419429779053
```
</details>