Deep learning CNN中的卷积层
我们知道CNN中的卷积层使用滤波器,不同的滤波器会在输入图像中寻找不同的信息 但在这里,我们有prototxt文件,它有卷积层的规范Deep learning CNN中的卷积层,deep-learning,caffe,Deep Learning,Caffe,我们知道CNN中的卷积层使用滤波器,不同的滤波器会在输入图像中寻找不同的信息 但在这里,我们有prototxt文件,它有卷积层的规范 layer { name: "conv2_1" type: "Convolution" bottom: "pool1" top: "conv2_1" param { lr_mult: 1.0 decay_mult: 1.0 } param { lr_mult: 2.0 decay_mult: 0.0
layer {
name: "conv2_1"
type: "Convolution"
bottom: "pool1"
top: "conv2_1"
param {
lr_mult: 1.0
decay_mult: 1.0
}
param {
lr_mult: 2.0
decay_mult: 0.0
}
convolution_param {
num_output: 128
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0.0
}
}
}
不同网络(如GoogleNet、AlexNet、VGG等)中的所有卷积层或多或少都是相似的。
看看这个,如何理解,卷积层中的滤波器试图提取输入图像的哪些信息 编辑: 让我澄清我的问题。 我从prototxt文件中看到两个卷积层,如下所示。他们来自SSD
layer {
name: "conv1_1"
type: "Convolution"
bottom: "data"
top: "conv1_1"
param {
lr_mult: 1.0
decay_mult: 1.0
}
param {
lr_mult: 2.0
decay_mult: 0.0
}
convolution_param {
num_output: 64
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0.0
}
}
}
layer {
name: "conv2_1"
type: "Convolution"
bottom: "pool1"
top: "conv2_1"
param {
lr_mult: 1.0
decay_mult: 1.0
}
param {
lr_mult: 2.0
decay_mult: 0.0
}
convolution_param {
num_output: 128
pad: 1
kernel_size: 3
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0.0
}
}
}
然后我在这里打印他们的输出
资料
conv1_1和conv2_1图像是和
所以我的问题是这两个conv层如何产生不同的输出。但是prototxt文件没有区别。“卷积”
层不仅在参数(例如内核大小
,跨步
,垫
等)上不同,而且在其权重上也不同:卷积内核的可训练参数。您会看到不同的输出(也称为“响应”),因为过滤器的权重不同 关于caffe中“数据”blob和“参数/权重”blob之间的差异,请参见。
“卷积”
层不仅在其参数(例如,内核大小
,步幅
,垫
等)上不同,而且在其权重上也不同:卷积内核的可训练参数。您会看到不同的输出(也称为“响应”),因为过滤器的权重不同 有关caffe中“数据”Blob和“参数/权重”Blob之间的差异,请参见。 早期图层上的过滤器表示边缘等低级特征 (这些功能保留了更高的 利用与Gabor滤波器响应图相似的低层视觉信息进行精确定位的空间分辨率(1)。另一方面,中间层的过滤器提取更复杂的特征,如角点或斑点 随着你深入,你无法可视化和解释这些特征,因为中层和高层的过滤器并没有直接连接到输入图像。例如,当你得到第一层的输出时,你实际上可以将它可视化并解释为边,但当你深入并将第二个卷积层应用到这些提取的边(第一层的输出)时,你会得到类似边的边(或类似的东西)并捕获更多的语义信息和更少的细粒度空间细节。在prototxt文件中,所有卷积和其他类型的操作可以彼此相似。但由于它们的阶数和权重不同,因此提取的特征种类也不同。 早期图层上的过滤器表示边缘等低级特征 (这些功能保留了更高的 利用与Gabor滤波器响应图相似的低层视觉信息进行精确定位的空间分辨率(1)。另一方面,中间层的过滤器提取更复杂的特征,如角点或斑点 随着你深入,你无法可视化和解释这些特征,因为中层和高层的过滤器并没有直接连接到输入图像。例如,当你得到第一层的输出时,你实际上可以将它可视化并解释为边,但当你深入并将第二个卷积层应用到这些提取的边(第一层的输出)时,你会得到类似边的边(或类似的东西)并捕获更多的语义信息和更少的细粒度空间细节。在prototxt文件中,所有卷积和其他类型的操作可以彼此相似。但由于它们的阶数和权重不同,因此提取的特征种类也不同。
“看看这一点,如何理解,这个卷积层中的过滤器试图提取输入图像的哪些信息?”你没听懂吗?我没听懂你的问题。您想知道每一层上的每个过滤器都在寻找什么吗?通常,第一层提取类似边缘的特征(适用于精确定位),但随着您深入网络,过滤器主要作用于斑点形状特征,适用于相互区分对象。@HosseinKa是的。这就是我的意思。如何判断第一次卷积是在寻找边,接下来是在寻找斑点形状?prototxt文件中的那些,它们看起来都一样。你怎么知道哪个卷积在寻找哪个信息。@FalconUA我在编辑中更新了。“看看这个,怎么理解,卷积层中的过滤器试图提取输入图像的哪个信息?”你不明白吗?我不明白你的问题。您想知道每一层上的每个过滤器都在寻找什么吗?通常,第一层提取类似边缘的特征(适用于精确定位),但随着您深入网络,过滤器主要作用于斑点形状特征,适用于相互区分对象。@HosseinKa是的。这就是我的意思。如何判断第一次卷积是在寻找边,接下来是在寻找斑点形状?prototxt文件中的那些,它们看起来都一样。你们怎么知道哪个卷积在寻找哪个信息。@FalconUA我在编辑中更新了。很好的可视化图像!顺便问一下,如何为这些conv输出打印图像。我一个人策划那些小家伙。有什么工具可以绘图吗?我画出这些斑点,我得到的只是灰度。比如说,对于随机权重的新鲜网络,我们需要开始训练权重。在这种情况下,我们只知道最后一层的损失信息,我们计算梯度并逐层反向传播。然后根据损失更新每个conv层的权重。权重根据SGD自行更新。然后