首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在神经网络中,为什么传统上将神经元的数量设置为2^n?

在神经网络中,为什么传统上将神经元的数量设置为2^n?
EN

Stack Overflow用户
提问于 2020-08-21 10:53:48
回答 1查看 87关注 0票数 3

例如,当堆积Dense layers时,我们通常将神经元的数量设置为256个神经元,128个神经元,64个神经元,...诸若此类。

我的问题是:

传统上使用2^n神经元的原因是什么?这个实现会让代码运行得更快吗?节省内存?或者还有其他原因吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-23 00:12:53

这是历史。早期的用于GPU计算的神经网络实现(用CUDA、OpenCL等编写)必须关注有效的内存管理来进行数据并行。

一般来说,您必须在物理处理器上对齐N次计算。物理处理器的数量通常是2的幂。因此,如果计算的数量不是2的幂,则计算不能1:1映射,必须四处移动,这需要额外的内存管理(进一步阅读here)。这只与并行批处理有关,即将批处理大小作为2的幂可以获得更好的性能。有趣的是,拥有其他超参数,如隐藏单元的数量作为2的幂,从来没有可测量的好处-我假设随着神经网络变得越来越流行,人们只是在不知道原因的情况下开始采用这种做法,并将其推广到其他超参数。

如今,一些低级实现可能仍然受益于此约定,但如果您在2020年将CUDA与Tensorflow或Pytorch配合使用,并采用现代GPU架构,那么您不太可能遇到批处理大小为128和129之间的任何差异,因为这些系统针对非常高效的数据并行进行了高度优化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63515846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档