首先了解一下CNN是什么?卷积神经网络。
卷积神经网络,听起来像是计算机科学、生物学和数学的诡异组合,但它们已经成为计算机视觉领域中最具影响力的革新的一部分。神经网络在 2012 年崭露头角,Alex Krizhevsky 凭借它们赢得了那一年的 ImageNet 挑战赛(大体上相当于计算机视觉的年度奥林匹克),他把分类误差记录从 26% 降到了 15%,在当时震惊了世界。自那之后,大量公司开始将深度学习用作服务的核心。Facebook 将神经网络用于自动标注算法、谷歌将它用于图片搜索、亚马逊将它用于商品推荐、Pinterest 将它用于个性化主页推送、Instagram 将它用于搜索架构。
然而,应用这些网络最经典最流行的案例是进行图像处理。在图像处理任务中,让我们看一下如何使用卷积神经网络进行图像分类。
CNN在应用中,一般采用GPU加速,请解释为什么GPU可以有加速效果,主要加速算法的哪一个部分?
这里默认gpu加速是指NVIDIA的cuda加速。CPU是中央处理单元,gpu是图形处理单元,gpu由上千个流处理器(core)作为运算器。执行采用单指令多线程(SIMT)模式。相比于单核CPU(向量机)流水线式的串行操作,虽然gpu单个core计算能力很弱,但是通过大量线程进行同时计算,在数据量很大是会活动较为可观的加速效果。
具体到cnn,利用gpu加速主要是在conv(卷积)过程上。coNV过程同理可以像以上的向量加法一样通过cuda实现并行化。具体的方法很多,不过最好的还是利用fft(快速傅里叶变换)进行快速卷积。NVIDIA提供了cufft库实现fft,复数乘法则可以使用cublas库里的对应的level3的cublasCgemm函数。
GPU加速的基本准则就是“人多力量大”。举个最简单的例子,比如说你想计算一个很大很大的数据,用一块磐镭1070显卡,你觉得可能会很慢,这样你就会叠加使用,再用一块磐镭1070显卡,这样就可以增加数据的运算能力
磐镭1070显卡-深度学习性价比最高的显卡
CNN说到底主要问题就是计算量大,但是却可以比较有效的拆分成并行问题。随便拿一个层的filter来举例子,假设某一层有n个filter,每一个需要对上一层输入过来的map进行卷积操作。那么,这个卷积操作并不需要按照线性的流程去做,每个滤波器互相之间并不影响,可以大家同时做,然后大家生成了n张新的谱之后再继续接下来的操作。既然可以并行,那么同一时间处理单元越多,理论上速度优势就会越大。所以,处理问题就变得很简单粗暴,就像NV那样,暴力增加显卡单元数(当然,显卡的架构、内部数据的传输速率、算法的优化等等也都很重要)。
GPU主要是针对图形显示及渲染等技术的出众,而其中的根本是因为处理矩阵算法能力的强大,刚好CNN中涉及大量的卷积,也就是矩阵乘法等,所以在这方面具有优势。
机器学习的算法一定得经过gpu加速吗?
不一定。只有需要大量浮点数计算,例如矩阵乘法,才需要GPU加速。
用CNN对图像进行分类就是一个需要大量浮点数计算的典型案例,通常需要GPU加速
,