在 Python 中,获取训练过的 tensorflow2 模型的图像大小?

In Python, getting size of images tensorflow2 model trained on?

我正在加载模型使用:

m = tf.saved_model.load(str(model_path))

我希望能够获取有关训练模型的图像大小的信息,以便我可以调整要推断的新图像的大小。

我知道我可以使用 keras 模型:

shape_0 = m.layers[0].output_shape
input_height = shape_0[1]
input_width= shape_0[2]

获取训练图像的输入高度和宽度。

是否有类似的命令可以从 tensorflow2 模型中获取这些值?

使用model.signatures['serving_default']:

import tensorflow as tf

model = tf.keras.Sequential([
  tf.keras.layers.Conv2D(16, 3, padding='same', activation='relu', input_shape=(128, 128, 3)),
  tf.keras.layers.MaxPooling2D(),
  tf.keras.layers.Conv2D(32, 3, padding='same', activation='relu'),
  tf.keras.layers.MaxPooling2D(),
  tf.keras.layers.Conv2D(64, 3, padding='same', activation='relu'),
  tf.keras.layers.MaxPooling2D(),
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dense(5)
])
tf.saved_model.save(model, '/content/model')
imported_model = tf.saved_model.load('/content/model')

print(imported_model.signatures['serving_default'])
INFO:tensorflow:Assets written to: /content/model/assets
ConcreteFunction signature_wrapper(*, conv2d_3_input)
  Args:
    conv2d_3_input: float32 Tensor, shape=(None, 128, 128, 3)
  Returns:
    {'dense_4': <1>}
      <1>: float32 Tensor, shape=(None, 5)