卷积神经网络作为一种前馈神经网络,其神经元可以响应一部分覆盖范围内的周围单元,主要用于处理大型图像。 在结构中包括卷积层和池化层。其在组合过程中,元素的数量会逐层递减,但随着运算单元的增多,其运算参数数量也会增多,毕竟运算参数的数量决定了其感知能力,所以压缩起来的难度相对较大,为了保证计算的正确性,对于运算参数的压缩只能压缩一部分参数,但也有限。个人理解,有误勿喷。
为什么要用GPU来训练神经网络而不是CPU?
为什么要用GPU来训练神经网络而不是CPU?
其实CPU和GPU一样可以训练神经网络。实际上,在早期,神经网络都是用CPU训练的。即使现在,像TensorFlow这样的流行框架也支持在CPU上运行。
那么,既然CPU和GPU都可以训练神经网络,为什么一般用GPU训练神经网络?很简单,因为GPU比CPU快很多。
比如,Victor Dibia(IBM研究院Research Staff Member)基于Tensorflow框架训练了一个实时检测手部的网络。
训练这样一个神经网络要花多久?
CPU上大约要12天,而GPU上则是5小时。
我们这里不讨论具体的型号,关键是两者的比例。CPU和GPU的差距太大了。
而且,实际上这个神经网络的训练时间已经通过迁移学习大大缩短了。迁移学习指直接拿训练好的图像分类的模型来用,只是重新训练最后一层或几层网络以检测手部,所以能快很多。
那如果从头开始训练的话(有的时候没有现成的模型可供迁移),可能要几周甚至几个月。这还是GPU的情况。
按照上面的比例,换算成CPU,那基本上就太慢太慢,慢到不现实的程度。
GPU之所以比CPU快好多,主要是因为,从运算的角度来看,神经网络主要是由大量的浮点矩阵构成的。而现代的神经网络,可能有几千到几百万的浮点矩阵(所谓深度学习),因此需要很大的内存带宽来访问这些海量的浮点矩阵。而GPU的内存带宽比CPU高很多。比如Intel的Core i9-7980XE内存带宽约为57GB/s,而NVIDIA的Tesla P100带宽高达900GB/s。
上图为各代CPU和GPU的带宽比较(来源:Karl Rupp)