Я подаю цветные фотографии 1080x1616 в сверточную нейронную сеть в Керасе.Данные передаются по сети очень хорошо, пока не дойдут до последнего сверточного уровня, выдав ошибку, сообщающую, что они ожидают 4-мерный тензор, но вместо этого получают (32,1) -тензор.Я не понимаю, где генерируется это число.
Это моя модель архитектуры:
model = keras.Sequential([
Conv2D(32, (3,3), padding='same', activation='relu', data_format="channels_last", input_shape=(self.x_res,self.y_res,self.n_channels), kernel_initializer=keras.initializers.he_normal()),
MaxPooling2D((2,2)),
Conv2D(64, (3, 3), padding='same', activation='relu', kernel_initializer=keras.initializers.he_normal()),
MaxPooling2D((2, 2)),
Conv2D(128, (3, 3), padding='same', activation='relu', kernel_initializer=keras.initializers.he_normal()),
MaxPooling2D((2, 2)),
Conv2D(256, (3, 3), padding='same', activation='relu', kernel_initializer=keras.initializers.he_normal()),
UpSampling2D((2, 2)),
Conv2D(128, (3, 3), padding='same', activation='relu', kernel_initializer=keras.initializers.he_normal()),
UpSampling2D((2, 2)),
Conv2D(64, (3, 3), padding='same', activation='relu', kernel_initializer=keras.initializers.he_normal()),
UpSampling2D((2, 2)),
Conv2D(self.n_channels, (1, 1), padding='same', activation='sigmoid', kernel_initializer=keras.initializers.he_normal())
])
И это из модели.summary ()
Layer (type) Output Shape Param #
=================================================================
conv2d_1 (Conv2D) (None, 1080, 1616, 32) 896
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 540, 808, 32) 0
_________________________________________________________________
conv2d_2 (Conv2D) (None, 540, 808, 64) 18496
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 270, 404, 64) 0
_________________________________________________________________
conv2d_3 (Conv2D) (None, 270, 404, 128) 73856
_________________________________________________________________
max_pooling2d_3 (MaxPooling2 (None, 135, 202, 128) 0
_________________________________________________________________
conv2d_4 (Conv2D) (None, 135, 202, 256) 295168
_________________________________________________________________
up_sampling2d_1 (UpSampling2 (None, 270, 404, 256) 0
_________________________________________________________________
conv2d_5 (Conv2D) (None, 270, 404, 128) 295040
_________________________________________________________________
up_sampling2d_2 (UpSampling2 (None, 540, 808, 128) 0
_________________________________________________________________
conv2d_6 (Conv2D) (None, 540, 808, 64) 73792
_________________________________________________________________
up_sampling2d_3 (UpSampling2 (None, 1080, 1616, 64) 0
_________________________________________________________________
conv2d_7 (Conv2D) (None, 1080, 1616, 3) 195
=================================================================
Total params: 757,443
Trainable params: 757,443
Non-trainable params: 0
_________________________________________________________________
None
Документация Keras для слоя UpSampling2D гласит:
Output shape
4D tensor