关于 caffe 中卷积层 filter 的一个小疑问,求解答~~~~

2015-09-10 16:50:04 +08:00
 skyduy
各位大神你们好,对于下面的一个 layer 模型:
layer {
  name: "conv1"
  type: "Convolution"
  bottom: "data"
  top: "conv1"

  param { lr_mult: 1   decay_mult: 1 }
  param { lr_mult: 2   decay_mult: 0 }

  convolution_param {
   num_output: 96
   kernel_size: 11
   stride: 4
   weight_filler {type: "gaussian"   std: 0.01 }
   bias_filler   {type: "constant"   value: 0}
 }
}

之前我看了 UFLDL 教程,那里 filter 是事先通过同类的 training set 经过 Sparse Autoencoder 的得出的(模拟人类识别图像时,只有少部分神经活跃),自编码时 loss function 中还有个 KL_divergence 判罚,但这里使用的 loss function 没有该项。
此外,对 filter 进行配置的 weight_filler 和 bias_filler 是什么作用?是进行初始化的吗?
 如果是,那 weight_filter 里面的 type 又是干嘛的?
 如果不是, loss function 和 solvers 都已经给出了,这一项又有什么作用?
8490 次点击
所在节点    Caffe
17 条回复
nbndco
2015-09-10 17:37:14 +08:00
你还是先对 cnn 有个概念再来弄 caffe 吧,你这里连个 loss 都没有, solver 和初始化有什么关系
xunyu
2015-09-10 18:31:17 +08:00
filter 是阈值,不是初始化,不敢确定你的模型是哪个
skyduy
2015-09-11 08:40:45 +08:00
@nbndco 我这里只放了一个 layer 层,我的初始化的意思是, W 和 b 的初始值
skyduy
2015-09-11 08:58:15 +08:00
@nbndco 我看 caffe 教程里的, loss 默认使用了 L (W )≈1/N∑fW (X (i ))+λr (W ) , solvers 有 SGD ADAGRAD NESTEROV ,我现在最想不通的就是用来卷积的 filter 到底是通过什么优化得到的,毕竟一个 filter 意味着提取某一个 feature ,我之前说了通过 Sparse Autoencoder 可以模拟人脑提取特征,但这里完全没有出现它的影子,而且还出现了新的 weight_filter 和 type...求不嫌麻烦解释一下...万分感谢
skyduy
2015-09-11 09:00:09 +08:00
发现一个神器: Keras.
nbndco
2015-09-11 09:10:16 +08:00
@skyduy autoencoder 是 unsupervised 学习,自然不需要任何其他信息, cnn 是 supervised ,你要有一个目标,由 loss 层表示
nbndco
2015-09-11 09:11:31 +08:00
weight 就是连接权重,初始化用了 gaussian 随机采样,都是最常见的方式
ihciah
2015-09-11 09:15:00 +08:00
远程围观
skyduy
2015-09-11 09:15:52 +08:00
@nbndco 噢!那 filter 在这里不是隐含着通过 unsupervised learning 得到的吗?
skyduy
2015-09-11 09:16:10 +08:00
@ihciah 你来的好及时。。。
skyduy
2015-09-11 09:17:02 +08:00
忘记 @xunyu 了...请看一下 4 楼回复... Orz
nbndco
2015-09-11 09:21:54 +08:00
@skyduy 这里必须要 supervise , cnn 基本没有办法 unsupervise
skyduy
2015-09-11 09:31:37 +08:00
@nbndco 嗯,这里有 supervise...难道 filter 的获取也要根据定义的 model 通过从 input 到最终的 label supervise 到?
还有 autoencoder 不也可以把 label 看成是 input 的 supervise 吗?
xunyu
2015-09-11 09:57:48 +08:00
深度学习里的人脑特征主要是通过非线性提现的,在教材里是 sigmoid 或 tan 函数处理后的非线性通过 bptt 调参,你最好把整个模型都贴出来,这个层的激活函数是哪个, filler 就是 filter 的功能没啥其他功能的
skyduy
2015-09-11 10:55:35 +08:00
@xunyu
@nbndco
谢谢,参照 http://blog.csdn.net/whiteinblue/article/details/43083815 问题已经解决,这里采用的 filter 是 gaussian filter , type 就是用来指定 filter 类型的,和我说的那个自编码出来的 filter 没有冲突,而不同的 filter 在具体的问题也应该会出现不同的结果。
再次谢谢。
nbndco
2015-09-11 11:56:12 +08:00
@skyduy 这里只是有个初始化的 filler ,不是 filter ,初始化的方式很多, gaussian 只是最常见的一种,和网络结构完全无关。
由于性能原因,现在的神经网络的非线性体现在 RELU ,早已经不使用任何 sigmoid 。
个人建议还是从基本一点的开始学习理解。
skyduy
2015-09-13 23:28:06 +08:00
@nbndco 这两天一直在用 win10 配置 caffe ,没来逛 v2😲 还是谢谢你的忠告,谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/219721

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX