我对过滤器参数感到困惑,它是 keras 中 Conv2D() 层函数的第一个参数。据我了解,过滤器应该执行诸如边缘检测或锐化图像或模糊图像之类的操作,但是当我将模型定义为
input_shape = (32, 32, 3)
model = Sequential()
model.add( Conv2D(64, kernel_size=(5, 5), activation='relu', input_shape=input_shape, strides=(1,1), padding='same') )
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2,2)))
model.add(Conv2D(64, kernel_size=(5, 5), activation='relu', input_shape=input_shape, strides=(1,1), padding='same'))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2,2)))
model.add(Conv2D(128, kernel_size=(5, 5), activation='relu', input_shape=input_shape, strides=(1,1), padding='same'))
model.add(Flatten())
model.add(Dense(3072, activation='relu'))
model.add(Dense(2048, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))
Run Code Online (Sandbox Code Playgroud)
我没有在 Conv2D 函数中的任何地方提到边缘检测或模糊或锐化。输入图像是 32 x 32 RGB 图像。
所以我的问题是,当我将卷积层定义为 时Conv2D(64, ...),这 64 是否意味着 keras 随机选择的 64 个不同类型的过滤器,例如垂直边缘、水平边缘等?如果是这样,那么 32x32 1 通道图像上的卷积层(具有 64 个滤波器和 5x5 内核和 1x1 步长)的输出是 64 个图像,每个图像大小为 28x28。这 …