Conv2D:如何获取每个滤波器的值

我的模型:

classifier = Sequential()# Convolutional + MaxPooling -> 1classifier.add(Conv2D(32, (3,3), input_shape = (IMAGE_SIZE, IMAGE_SIZE, 3)))convout1 = Activation('relu')classifier.add(convout1)classifier.add(MaxPooling2D(pool_size = (2,2)))classifier.add(Dropout(0.25))

我运行以下代码来获取权重

classifier.layers[0].get_weights()[0]

它返回了一个3x3x3x32的数组。难道它不应该返回32个3x3的矩阵吗?


回答:

权重的形状是正确的,因为卷积滤波器是应用于整个3D输入体的,并且不同通道的参数是不共享的(尽管它们在空间上是共享的)。请看CS231n课程中的图片:

convolution

是的,输出体是通过在深度体上对卷积进行求和得到的,但每个通道的参数是不同的。

在你的例子中,通道是RGB(因为input_shape = (IMAGE_SIZE, IMAGE_SIZE, 3)),空间滤波器大小是3x3,并且有32个滤波器。因此,结果形状是3x3x3x32,每个滤波器的形状是3x3x3

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注