Python 调整张量大小以与其他层连接

Python 调整张量大小以与其他层连接,python,tensorflow,keras,computer-vision,conv-neural-network,Python,Tensorflow,Keras,Computer Vision,Conv Neural Network,我从下面的 现在,我需要对其他人的层次进行分析。我试着用Deconv_1凝聚Conv_10层,但是我得到了关于张量大小的错误。所以我需要将Conv_10层从(3,44,44)转换为(3,34,34)。我该怎么做 此网络的当前实现可在以下位置获得: 实际错误:ValueError:A串联层需要输入 匹配除concat轴以外的形状。获取输入形状:[(无, 34、34、3、(无、44、44、3)] 您可以使用keras.layers.reformate(target_shape)对层输出进行整形,但

我从下面的

现在,我需要对其他人的层次进行分析。我试着用Deconv_1凝聚Conv_10层,但是我得到了关于张量大小的错误。所以我需要将Conv_10层从(3,44,44)转换为(3,34,34)。我该怎么做

此网络的当前实现可在以下位置获得:

实际错误:ValueError:A
串联
层需要输入 匹配除concat轴以外的形状。获取输入形状:[(无, 34、34、3、(无、44、44、3)]


您可以使用
keras.layers.reformate(target_shape)
对层输出进行整形,但标准是整形后目标形状中的元素总数必须等于输入形状中的元素总数

但是您的目标形状标注(无、34、34、3)不允许保存输入标注(无、44、44、3)中的所有数据。但是,您可以从(None,44,44,3)中丢失信息以将其重塑为(None,34,34,3),但这不是理想的方式,因为空间信息丢失了

但是,您可以使用零填充来调整图层较小的输出形状。打开(None,34,34,3)将其与(None,44,44,3)匹配,然后连接
ZeroPadding2D
可以在图像张量的顶部、底部、左侧和右侧添加零的行和列

示例:我使用了与您在问题中提到的形状相同的Conv2D层。[(无,34,34,3),(无,44,44,3)]

输出-

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
__________________________________________________________________________________________________

keras.layers.reformate(target_shape)
仅允许重塑特征图(或矩阵)。例如:它可以重塑形状数组(3,44,44),也就是说,(3,22,88)[As,
44x44x3=5808
;以及
22x88x3=5808
,只要总大小相同,就可以重塑向量]

您在这里尝试的是调整大小,Keras没有提供调整大小层。这可以通过使用Keras Lamda layer实现调整大小/切片功能来实现

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
__________________________________________________________________________________________________