You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

卷积层输出深度理解困惑及TensorFlow相关技术问题咨询

卷积层输出深度与TensorFlow模型输出形状疑问解答

一、多通道输入的卷积融合原理

拿你提到的6x6x3输入、2个3x3 filter的例子来说:每个filter实际是3x3x3的结构——完全对应输入的3个颜色通道。卷积计算时,这个filter会分别在输入的红、绿、蓝三个通道上做3x3的卷积运算,然后把三个通道得到的结果逐像素相加,再加上该filter自带的偏置值,就得到输出特征图里的一个4x4通道。用2个这样独立的filter,就会生成2个独立的4x4通道,最终输出就是4x4x2的张量。

二、TensorFlow模型summary中None的含义

模型summary里输出形状的第一个维度None,代表批量大小(batch size)。因为定义模型时,我们只指定了单张输入图片的形状(128,128,3),没有固定一次喂给模型的图片数量(也就是批量大小)。训练时你可以用32、64这类批量值,预测时可能只用1张图片,模型都能适配处理,所以用None来表示这个可灵活调整的维度。

相关代码

model = Sequential()

model.add(Conv2D(32, kernel_size=5,strides=1, activation=None, input_shape=(128,128,3)))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPool2D(2,2))
model.add(Dropout(0.2))

model.add(Flatten())
model.add(Dense(64,activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(units=1))
model.add(Activation('sigmoid'))


for layer in model.layers:
    # check for convolutional layer
    if 'conv' not in layer.name:
        continue
    # get filter weights
    filters, biases = layer.get_weights()
    print(layer.name, filters.shape)

模型summary输出

conv2d_45 (Conv2D) (None, 124, 124, 32) 2432
batch_normalization_38 (BatchNormalization) (None, 124, 124, 32) 128
activation_36 (Activation) (None, 124, 124, 32) 0
max_pooling2d_17 (MaxPooling2D) (None, 62, 62, 32) 0
dropout_26 (Dropout) (None, 62, 62, 32) 0
flatten_11 (Flatten) (None, 123008) 0
dense_23 (Dense) (None, 64) 7872576
dropout_27 (Dropout) (None, 64) 0
dense_24 (Dense) (None, 1) 65
activation_37 (Activation) (None, 1) 0

内容的提问来源于stack exchange,提问作者Zonglai Liang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 00:46:03