TfLite ResizeInputTensor does not resize Transposed Convolution or Resize operation output tensors
So I was actually able to run the model, (though its hard to say what a correct output would be as it seems this issue makes the "true input" ambiguous i.e. which part of the input tensor is it actually reading) [gist](https://colab.sandbox.google.com/gist/pkgoogle/3fbb268ca0a3dd7aa011600fc8d26951/61410.ipynb)

But it is true that the change in tensor shape does not appear to be propagated towards the output. I am unsure if this is supported. As such I will also label this as a feature request. @miaout17 can you please take a look? Thanks.
### Issue type

Bug

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

No

### Source

source

### TensorFlow version

2.12

### Custom code

Yes

### OS platform and distribution

macOS 13.2.1

### Mobile device

_No response_

### Python version

3.10

### Bazel version

_No response_

### GCC/compiler version

_No response_

### CUDA/cuDNN version

_No response_

### GPU model and memory

_No response_

### Current behavior?

When a tflite model has a TRANSPOSE_CONV layer or a RESIZE_... layer, the shapes of the output tensors of those layers are not reshaped when Interpreter.allocate_tensors is called after Interpreter.resize_tensor_input() is called in the Python API, or when TfLiteInterpreterAllocateTensors() is called after TfLiteInterpreterResizeInputTensor() is called in the C API. Thus, the tensor allocation calls fail if there is a fusion layer after the TRANSPOSE_CONV or RESIZE... layers in the network that has two differently shaped inputs because of the failure to reshape those layers' outputs. Or, if there is no such fusion layer, the tensor allocation may succeed but the output shape of the model will not be appropriately resized.

### Standalone code to reproduce the issue

```shell
import tensorflow as tf

ly = tf.keras.layers
input8 = tf.keras.Input(shape=(8, 8, 1))

y = ly.Conv2D(filters=1, kernel_size=[3, 3], kernel_initializer=tf.keras.initializers.Constant(1), name="conv_1")(input8)
y = ly.Conv2D(filters=1, kernel_size=[5, 5], kernel_initializer=tf.keras.initializers.Constant(1), name="conv_2")(y)
upsample_output = ly.UpSampling2D(size=(2,2))(y)
upsample_model = tf.keras.Model(inputs=input8, outputs=upsample_output)

x = ly.Conv2D(filters=1, kernel_size=[3, 3], kernel_initializer=tf.keras.initializers.Constant(1), name="conv_1")(input8)
x = ly.Conv2D(filters=1, kernel_size=[5, 5], kernel_initializer=tf.keras.initializers.Constant(1), name="conv_2")(x)
transpose_output = ly.Conv2DTranspose(filters=1, kernel_size=[2, 2], kernel_initializer=tf.keras.initializers.Constant(1), strides=[2,2], name="conv_transpose_1")(x)
transpose_model = tf.keras.Model(inputs=input8, outputs=transpose_output)

converter = tf.lite.TFLiteConverter.from_keras_model(upsample_model)
upsample_tflite_model = converter.convert()
with open('upsample_model.tflite', 'wb') as handle:
    handle.write(upsample_tflite_model)

converter = tf.lite.TFLiteConverter.from_keras_model(transpose_model)
transpose_tflite_model = converter.convert()
with open('transpose_model.tflite', 'wb') as handle:
    handle.write(transpose_tflite_model)

upsample_interpreter = tf.lite.Interpreter(model_path='models/upsample_model.tflite')
transpose_interpreter = tf.lite.Interpreter(model_path='models/transpose_model.tflite')

print("BEFORE INPUT RESIZING (expect input shape (1, 8, 8, 1) and output shape (1, 4, 4, 1)")
print()
print(upsample_interpreter.get_input_details())
print(upsample_interpreter.get_output_details())
print()
print()
print(transpose_interpreter.get_input_details())
print(transpose_interpreter.get_output_details())
print()
print()

upsample_interpreter.resize_tensor_input(0, (1, 16, 16, 1))
transpose_interpreter.resize_tensor_input(0, (1, 16, 16, 1))
upsample_interpreter.allocate_tensors()
transpose_interpreter.allocate_tensors()

print("AFTER INPUT RESIZING (expect input shape (1, 16, 16, 1) and output shape (1, 8, 8, 1)")
print()
print(upsample_interpreter.get_input_details())
print(upsample_interpreter.get_output_details())
print()
print()
print(transpose_interpreter.get_input_details())
print(transpose_interpreter.get_output_details())
```


### Relevant log output

```shell
BEFORE INPUT RESIZING (expect input shape (1, 8, 8, 1) and output shape (1, 4, 4, 1)

[{'name': 'serving_default_input_19:0', 'index': 0, 'shape': array([1, 8, 8, 1], dtype=int32), 'shape_signature': array([-1,  8,  8,  1], dtype=int32), 'dtype': <class 'numpy.float32'>, 'quantization': (0.0, 0), 'quantization_parameters': {'scales': array([], dtype=float32), 'zero_points': array([], dtype=int32), 'quantized_dimension': 0}, 'sparsity_parameters': {}}]
[{'name': 'StatefulPartitionedCall:0', 'index': 7, 'shape': array([1, 4, 4, 1], dtype=int32), 'shape_signature': array([-1,  4,  4,  1], dtype=int32), 'dtype': <class 'numpy.float32'>, 'quantization': (0.0, 0), 'quantization_parameters': {'scales': array([], dtype=float32), 'zero_points': array([], dtype=int32), 'quantized_dimension': 0}, 'sparsity_parameters': {}}]


[{'name': 'serving_default_input_19:0', 'index': 0, 'shape': array([1, 8, 8, 1], dtype=int32), 'shape_signature': array([-1,  8,  8,  1], dtype=int32), 'dtype': <class 'numpy.float32'>, 'quantization': (0.0, 0), 'quantization_parameters': {'scales': array([], dtype=float32), 'zero_points': array([], dtype=int32), 'quantized_dimension': 0}, 'sparsity_parameters': {}}]
[{'name': 'StatefulPartitionedCall:0', 'index': 14, 'shape': array([1, 4, 4, 1], dtype=int32), 'shape_signature': array([-1,  4,  4,  1], dtype=int32), 'dtype': <class 'numpy.float32'>, 'quantization': (0.0, 0), 'quantization_parameters': {'scales': array([], dtype=float32), 'zero_points': array([], dtype=int32), 'quantized_dimension': 0}, 'sparsity_parameters': {}}]


AFTER INPUT RESIZING (expect input shape (1, 16, 16, 1) and output shape (1, 8, 8, 1)

[{'name': 'serving_default_input_19:0', 'index': 0, 'shape': array([ 1, 16, 16,  1], dtype=int32), 'shape_signature': array([-1,  8,  8,  1], dtype=int32), 'dtype': <class 'numpy.float32'>, 'quantization': (0.0, 0), 'quantization_parameters': {'scales': array([], dtype=float32), 'zero_points': array([], dtype=int32), 'quantized_dimension': 0}, 'sparsity_parameters': {}}]
[{'name': 'StatefulPartitionedCall:0', 'index': 7, 'shape': array([1, 4, 4, 1], dtype=int32), 'shape_signature': array([-1,  4,  4,  1], dtype=int32), 'dtype': <class 'numpy.float32'>, 'quantization': (0.0, 0), 'quantization_parameters': {'scales': array([], dtype=float32), 'zero_points': array([], dtype=int32), 'quantized_dimension': 0}, 'sparsity_parameters': {}}]


[{'name': 'serving_default_input_19:0', 'index': 0, 'shape': array([ 1, 16, 16,  1], dtype=int32), 'shape_signature': array([-1,  8,  8,  1], dtype=int32), 'dtype': <class 'numpy.float32'>, 'quantization': (0.0, 0), 'quantization_parameters': {'scales': array([], dtype=float32), 'zero_points': array([], dtype=int32), 'quantized_dimension': 0}, 'sparsity_parameters': {}}]
[{'name': 'StatefulPartitionedCall:0', 'index': 14, 'shape': array([1, 4, 4, 1], dtype=int32), 'shape_signature': array([-1,  4,  4,  1], dtype=int32), 'dtype': <class 'numpy.float32'>, 'quantization': (0.0, 0), 'quantization_parameters': {'scales': array([], dtype=float32), 'zero_points': array([], dtype=int32), 'quantized_dimension': 0}, 'sparsity_parameters': {}}]
```
