Tensorflow 为什么使用2x2滤波器对5x5图像进行卷积会在TF MNIST中产生32个特征?

Tensorflow 为什么使用2x2滤波器对5x5图像进行卷积会在TF MNIST中产生32个特征?,tensorflow,Tensorflow,我不明白为什么在一个5x5补丁和一个2x2过滤器的卷积中会产生32个特性 卷积每次移位1,所以它应该产生6*6=36个特征,而不是32个。有什么我遗漏的吗?32是一个超参数:定义网络后,您可以选择从输入中提取多少功能 使用28x28x1输入,您可以选择学习32个卷积滤波器。 学习卷积滤波器提取单个特征 W_conv1 = weight_variable([5, 5, 1, 32]) 。。。是一组32个过滤器的定义,每个过滤器的大小为5x5x1,网络将在培训阶段后学习 你可以改变卷积滤波器的数量

我不明白为什么在一个5x5补丁和一个2x2过滤器的卷积中会产生32个特性


卷积每次移位1,所以它应该产生6*6=36个特征,而不是32个。有什么我遗漏的吗?

32是一个超参数:定义网络后,您可以选择从输入中提取多少功能

使用28x28x1输入,您可以选择学习32个卷积滤波器。 学习卷积滤波器提取单个特征

W_conv1 = weight_variable([5, 5, 1, 32])
。。。是一组32个过滤器的定义,每个过滤器的大小为5x5x1,网络将在培训阶段后学习

你可以改变卷积滤波器的数量来学习,因为它是一个超参数,所以完全是任意的

例如,您可以选择从第一个卷积层提取64个特征,方法是按以下方式更改前一行:

W_conv1 = weight_variable([5, 5, 1, 64])
b_conv1 = bias_variable([64]) #change biases as well
但是您必须在下面的层中跟踪此更改

在本教程中,您可以找到另一组卷积滤波器的定义:

W_conv2 = weight_variable([5, 5, 32, 64])
这是一组64个卷积滤波器的定义,每个滤波器的大小为5x5x32

如果更改第一层以提取64个要素,则必须相应更改此层:

    W_conv2 = weight_variable([5, 5, 64, 64])
这意味着64个提取的特征中的每一个都与另外64个特征相结合:抽象性增加

第一层提取简单特征(边、线等),其他层结合提取的特征形成更复杂的特征

卷积每次移位1,所以它应该产生6*6=36个特征,而不是32个

“移位”(称为跨步,
s
)是执行二维卷积时要跳转的像素数

如果输入端为28 px,则与第5端(一组)滤波器的卷积输出为
(28-5+2P)/s=1+1=24

由于卷积op的padding参数=相同,因此计算
p
的值,以产生与输入大小相同的输出,因此为28

你的6*6没有意义

长话短说:
不要将提取的特征数量(超参数)与激活图的大小混淆。激活映射是输入和学习的卷积滤波器(也称为内核)之间卷积的结果。

32是一个超参数:定义网络后,选择从输入中提取多少特征

使用28x28x1输入,您可以选择学习32个卷积滤波器。 学习卷积滤波器提取单个特征

W_conv1 = weight_variable([5, 5, 1, 32])
。。。是一组32个过滤器的定义,每个过滤器的大小为5x5x1,网络将在培训阶段后学习

你可以改变卷积滤波器的数量来学习,因为它是一个超参数,所以完全是任意的

例如,您可以选择从第一个卷积层提取64个特征,方法是按以下方式更改前一行:

W_conv1 = weight_variable([5, 5, 1, 64])
b_conv1 = bias_variable([64]) #change biases as well
但是您必须在下面的层中跟踪此更改

在本教程中,您可以找到另一组卷积滤波器的定义:

W_conv2 = weight_variable([5, 5, 32, 64])
这是一组64个卷积滤波器的定义,每个滤波器的大小为5x5x32

如果更改第一层以提取64个要素,则必须相应更改此层:

    W_conv2 = weight_variable([5, 5, 64, 64])
这意味着64个提取的特征中的每一个都与另外64个特征相结合:抽象性增加

第一层提取简单特征(边、线等),其他层结合提取的特征形成更复杂的特征

卷积每次移位1,所以它应该产生6*6=36个特征,而不是32个

“移位”(称为跨步,
s
)是执行二维卷积时要跳转的像素数

如果输入端为28 px,则与第5端(一组)滤波器的卷积输出为
(28-5+2P)/s=1+1=24

由于卷积op的padding参数=相同,因此计算
p
的值,以产生与输入大小相同的输出,因此为28

你的6*6没有意义

长话短说:
不要将提取的特征数量(超参数)与激活图的大小混淆。激活映射是输入和学习的卷积滤波器(也称为内核)之间卷积的结果。

文档说明:

卷积运算将为每个5x5面片计算32个特征。其重量张量的形状为[5,5,1,32]

您的困惑是因为您认为32个特征代表卷积输出将具有的参数数量。但事实并非如此

表示第二个参数代表您的过滤器,由
[过滤器高度、过滤器宽度、输入通道、输出通道]
组成。所以
[5,5,1,32]
意味着你的
在_频道中
是1:你有一个灰度图像,所以这里没有什么意外


32意味着在我们的学习阶段,网络将尝试学习32种不同的内核,这些内核将在预测过程中使用。您可以将此数字更改为任何其他数字,因为它是一个可以调整的超参数。

文档中说:

卷积运算将为每个5x5面片计算32个特征。其重量张量的形状为[5,5,1,32]

您的困惑是因为您认为32个特征代表卷积输出将具有的参数数量。但事实并非如此

表示第二个参数代表您的过滤器,由
[过滤器高度、过滤器宽度、输入通道、输出通道]
组成。所以
[5,5,1,32]
意味着你的
在_频道中
是1:你有一个灰度图像,所以这里没有什么意外

32意味着