Вы можете использовать keras.layers.Reshape(target_shape)
, чтобы изменить форму вывода слоя, но критерий состоит в том, что общее количество элементов в целевой фигуре после изменения формы должно быть равно общему количеству элементов во входной форме.
Но ваши целевые измерения формы (Нет, 34, 34, 3) не позволяют хранить все данные из входных измерений (Нет, 44, 44, 3). Однако вы можете потерять информацию из (Нет, 44, 44, 3), чтобы изменить ее форму (Нет, 34, 34, 3), но это не идеальный способ, поскольку пространственная информация теряется.
Однако вы можете выполнить заполнение нулями, чтобы изменить меньшую выходную форму слоя .ie (None, 34, 34, 3), чтобы сопоставить его с (None, 44, 44, 3) и затем объединить. ZeroPadding2D
может добавлять строки и столбцы нулей сверху, снизу, слева и справа от тензора изображения.
Пример: Я использовал слои Conv2D, имеющие ту же форму, как вы упоминали в вопросе .ie [(Нет, 34, 34, 3), (Нет, 44, 44, 3)]
from keras.models import Model
from keras.layers import Input, concatenate, Conv2D, ZeroPadding2D
from keras.optimizers import Adagrad
import tensorflow.keras.backend as K
input_img1 = Input(shape=(44,44,3))
x1 = Conv2D(3, (3, 3), activation='relu', padding='same')(input_img1)
input_img2 = Input(shape=(34,34,3))
x2 = Conv2D(3, (3, 3), activation='relu', padding='same')(input_img2)
# Zero Padding of 5 at the top, bottom, left and right side of an image tensor
x3 = ZeroPadding2D(padding = (5,5))(x2)
# Concatenate works as layers have same size output
x4 = concatenate([x1,x3])
output = Dense(18, activation='relu')(x4)
model = Model(inputs=[input_img1,input_img2], outputs=output)
model.summary()
Выход -
Model: "model_19"
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_85 (InputLayer) (None, 34, 34, 3) 0
__________________________________________________________________________________________________
input_84 (InputLayer) (None, 44, 44, 3) 0
__________________________________________________________________________________________________
conv2d_67 (Conv2D) (None, 34, 34, 3) 84 input_85[0][0]
__________________________________________________________________________________________________
conv2d_66 (Conv2D) (None, 44, 44, 3) 84 input_84[0][0]
__________________________________________________________________________________________________
zero_padding2d_11 (ZeroPadding2 (None, 44, 44, 3) 0 conv2d_67[0][0]
__________________________________________________________________________________________________
concatenate_27 (Concatenate) (None, 44, 44, 6) 0 conv2d_66[0][0]
zero_padding2d_11[0][0]
__________________________________________________________________________________________________
dense_44 (Dense) (None, 44, 44, 18) 126 concatenate_27[0][0]
==================================================================================================
Total params: 294
Trainable params: 294
Non-trainable params: 0
__________________________________________________________________________________________________