У меня есть модель Keras, предназначенная для преобразования изображения (600, 600, 3) в 5 копий изображения (199,199,3).
X имеет форму (сэмплы, 1, 600, 600, 3) и Y имеет форму (образцы, 5, 199, 199, 3).
Моя модель:
inputs = Input(shape=(1, 600, 600, 3))
output1 = Conv3D(20, kernel_size=(1, 2, 2), activation='relu')(inputs)
output2 = Conv3D(40, kernel_size=(1, 3, 3), activation='relu')(output1)
output3 = MaxPooling3D(pool_size=(1, 3, 3))(output2)
output4 = Conv3D(120, kernel_size=(1, 4, 4), activation='relu')(output3)
output5 = Conv3DTranspose(3, kernel_size=(1, 4,4), activation='relu')(output4)
listOutput = concatenate(axis=0, inputs=[output5]*5)
model = Model(inputs=inputs, outputs=listOutput)
model.compile(loss='mse',
optimizer='adam',
metrics=['mae'])
Когда я компилирую свою модель, я получаю:
ValueError: Error when checking target: expected concatenate_1 to have shape (1, 199, 199, 3) but got array with shape (5, 199, 199, 3)
Похоже, что Керас неправильно читает форму моей цели, основываясь на форме X. Например, если я изменю X, чтобы ввести форму (2, 600, 600, 3), я get:
ValueError: Error when checking target: expected concatenate_1 to have shape (2, 199, 199, 3) but got array with shape (5, 199, 199, 3).
Keras интерпретирует мою целевую форму на основе X, и она равна (X.shape [1], 199, 199, 3), когда я просто хочу получить выходную форму (5, 199, 199, 3), и я определил Y как массив с формой (образцы, 5, 199, 199, 3). Я понятия не имею, как на самом деле Keras читает мои целевые данные.
Есть ли способ переопределить это вручную или вручную определить форму вывода в Keras? Спасибо.