问个机器学习问题,卷积神经网络的通道数是怎么定的?

2020-08-05 10:59:57 +08:00
 maxxfire
比如 LeNet 网络,它的通道数是为何这样设计的,有什么依据?
比如:
1. 第一层卷积层的通道为何是 6,按道理图片也就 RGB 三个通道。
2. 第二层卷积层的通道又是 16,这个依据是什么?
3. 在用 mxnet 实现时,卷积核的具体数字定义在何处,比如图像边缘检测,它的卷积核是:
[-1, 0, 1]
[-2, 0, 2]
[-1, 0, 1]
有很多核,有些核用来做边缘检测,有些核用来做高斯模糊。具体可参考: https://blog.csdn.net/chaipp0607/article/details/72236892
但在具体 mxnet 代码中,却未找到这些核的定义。
3034 次点击
所在节点    程序员
13 条回复
mscb
2020-08-05 11:19:19 +08:00
当然是炼丹练出来的呀!炼丹师这个俗称可不是开玩笑的,哈哈哈哈,手动🐶
maxxfire
2020-08-05 11:30:14 +08:00
@mscb 啊哈哈,还真有点形象,不过其网络结构一开始就定好了,这就是厉害之处了
jingous
2020-08-05 11:36:42 +08:00
随便定的。默认的分辨率降低一倍,通道数增加一倍。除开始几层外,通道一般都是 2 的 N 次方
jmc891205
2020-08-05 11:54:11 +08:00
这属于 hyperparameter
也要调的
jimliang
2020-08-05 11:58:19 +08:00
不断调参后的相对最优解
labnotok
2020-08-05 12:31:33 +08:00
深度学习的意义就是把特征的提取从手工的构建中解放出来,filter 是由数据和网络的训练决定的,自然不会出现功能确定的 filter 。而且你也很难在某个 filter train 完之后明确说它的作用是什么。filter 与其说是 convolution,直接理解成使用 cross-correlation 层次化提取特征会清晰很多。


运算上讲,channel 数是由上一层 filter 的个数决定的,而不是数据的维度。而你选择多少 filter 是个玄学的问题,稍微有点依据的说法是考虑你 GPU 的 CUDA 数和显存数据宽度,提高运算效率。
xiri
2020-08-05 12:56:07 +08:00
这东西就是随便猜(可能会有一点经验在里面),不断试错,最后选出一个最优的
nightwitch
2020-08-05 13:03:34 +08:00
channel 算是中等重要程度的超参数吧,直观的理解就是你想要把你的数据投影到多少维度的空间。没啥特定的规则,一般靠近原始输入的地方 channel 数逐渐增加,从低维空间升到高维,然后接近输出的的地方逐渐减少到 1 维输出,网络中可能有多个 1x1xchannel 的操作来调整通道数。
maxxfire
2020-08-05 13:46:15 +08:00
@labnotok 软件和数学都是严谨的,像这种玄学的东西我学不来
VDimos
2020-08-05 13:57:49 +08:00
炼丹就是要试的
realcaoqi95
2020-08-05 15:02:47 +08:00
玄学问题
superlc
2020-08-05 15:19:27 +08:00
一个 hyperparameter 而已
肯定是越多越好,参数越多能学到的信息量越大。不过一般来讲只要 filter 数够用了,再增加的话对性能的提升也十分有限,所以最终是一个参数量与资源消耗的权衡

和传统算法里面的各种 threshold 差不多,说白了就是在满足要求的前提下随便选的
IanPeverell
2020-08-05 15:48:09 +08:00
第一层 6 是经验值,并不是根据 RGB 而来的。意思是,在对输入提取特征值时,获取 6 种特质,然后再进行组合最后训练出来的效果、模型的性能等是最佳的。第二层的 16,是对 6 种特征进行组合得到的。

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

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

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

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

© 2021 V2EX