Как выполнить вывод из сохраненной модели подкласса Keras, размер которой отличается от размера обучающих данных

#python #tensorflow #machine-learning #keras #tensorflow-datasets

Вопрос:

Я пытаюсь написать модель Keras, которая реализует некоторую сложную логику. Эта логика была реализована в моем методе вызова

Поскольку мои сетевые слои являются сверточными, моя модель теоретически может предсказывать размеры входных данных, которые отличаются от размера, на котором я тренировался. Есть ли какой-либо способ указать это для выполнения прогнозов по данным.

Вот мой пример кода

 class CustomModel(tf.keras.Model):  def __init__(self):  super().__init__()  self.conv = tf.keras.layers.Conv2D(filters=4, kernel_size=4)   def call(inputs):  image = inputs[0]  output = self.conv(image)  # There is more complex logic here for inputs[1]  combined_output = (output, another_output)  return combined_output   

И это код, который я использую для запуска модели

 model = CustomModel() model.compile() model.fit(x=Train_TF_Dataset)  model.save(filename)  load_model = tf.keras.models.load_model(filename)  model.predict(x=Predict_TF_Dataset)  

Набор данных train TF и наборы данных predict TF состоят из разных размеров, что является нашим преимуществом.

Обучающие данные состояли из кортежа изображений 28x28x2 и эталонного изображения, в то время как данные прогнозирования состоят из 512x512x2 вместе с соответствующими эталонными изображениями. Размер первого ввода в кортеже может быть любым.

Есть ли какой-нибудь способ указать, что форма ввода (Нет, Нет, Нет, 2) вместо (Нет, 28, 28, 2). Первое значение None по умолчанию является переменным для размера пакета.

Решения, которые я видел в stackoverflow, просто преобразуют его в функциональную модель, что невозможно из-за сложности моего метода вызова