我训练了ResNet50V2模型,我想知道如何将时序从 3
渠道以 n
渠道。我的模型为
model.summary()
Model: "model_9"
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_9 (InputLayer) (None, 164, 164, 3) 0
__________________________________________________________________________________________________
conv1_pad (ZeroPadding2D) (None, 170, 170, 3) 0 input_9[0][0]
__________________________________________________________________________________________________
conv1_conv (Conv2D) (None, 82, 82, 64) 9472 conv1_pad[0][0]
__________________________________________________________________________________________________
pool1_pad (ZeroPadding2D) (None, 84, 84, 64) 0 conv1_conv[0][0]
__________________________________________________________________________________________________
...
...
...
...
...
...
post_relu (Activation) (None, 6, 6, 2048) 0 post_bn[0][0]
__________________________________________________________________________________________________
flatten_9 (Flatten) (None, 73728) 0 post_relu[0][0]
__________________________________________________________________________________________________
dense_9 (Dense) (None, 37) 2727973 flatten_9[0][0]
==================================================================================================
Total params: 26,292,773
Trainable params: 26,247,333
Non-trainable params: 45,440
第一个卷积层 "conv1_conv "有一个滤波器。
filters= layer.get_weights()[2] #conv1_conv layer
print(layer.name, filters.shape)
输出。
conv1_conv (7, 7, 3, 64)
我不明白的是,卷积操作是如何使... (170,170,3)
张量转换为 (82,82,64)
张量。
什么是 64
在 conv1_conv
表示?
你可以把卷积想象成一个大小为7×7的滑动窗口,在图像上滑动。每个过滤器都需要一个图像的窗口,这里7×7×3个数字a使一个线性投影成一个数字。每个滤波器的线性投影需要7*7*3个参数,你有64个参数,因此卷积的形状是7×7×3×64。
卷积的另一个重要属性是 大步走:这是窗口移动的一个步骤。你的窗口大小为7,图像的宽度和高度为170,也就是说,滑动窗口需要通过170-7=163像素。如果你用跨步2来做,就意味着1632=81.5个窗口,四舍五入为82。每个窗口都会得到64个滤镜的投影,因此形状为82×82×64。