【发布时间】:2018-06-21 13:57:38
【问题描述】:
我们知道 CNN 中的卷积层使用过滤器,不同的过滤器会在输入图像中寻找不同的信息。
但是假设在这个SSD 中,我们有 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
}
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 图像是 here 和 here。
所以我的问题是这两个卷积层如何产生不同的输出。但是prototxt文件没有区别。
【问题讨论】:
-
"看看那个,怎么理解,这个卷积层中的过滤器试图提取输入图像的哪些信息?"没找到你?
-
我没有得到你的问题。您想知道每一层上的每个过滤器都在寻找什么吗?
-
一般来说,第一层提取类似边缘的特征(适合精确定位),但随着您深入网络,过滤器主要适用于适合区分对象的斑点形状特征彼此。
-
@HosseinKa 是的。这就是我的意思。你怎么知道第一个卷积正在寻找边缘,而下面的卷积正在寻找 blob 形状? prototxt 文件中的那些,它们看起来都一样。你如何知道哪个卷积正在寻找哪个信息。
-
@FalconUA 我已在 EDIT 中更新。
标签: deep-learning caffe