首先,明白CPU和GPU的区别
1、 CPU,即中央处理器,擅长逻辑控制,串行的运算。
2、GPU,即图形处理器,擅长的是大规模并发计算,这也正是密码破解等所需要的。所以GPU除了图像处理,也越来越多的参与到计算当中来。
GPU的工作大部分就是这样,计算量大,但没什么技术含量,而且要重复很多很多次。你有个工作需要算几亿次一百以内加减乘除一样,最好的办法就是雇上几十个小学生一起算,一人算一部分,反正这些计算也没什么技术含量,纯粹体力活而已。而CPU就像老教授,积分微分都会算,就是工资高,一个老教授资顶二十个小学生,你要是富士康你雇哪个?GPU就是这样,用很多简单的计算单元去完成大量的计算任务,纯粹的人海战术。这种策略基于一个前提,就是小学生A和小学生B的工作没有什么依赖性,是互相独立的。很多涉及到大量计算的问题基本都有这种特性,比如你说的破解密码,挖矿和很多图形学
3、在深度学习中有两种内存排布方式,NCHW 和 NHWC。早期的caffe,tensorflow是以NHWC为主,因为他们开始主要支持的基于CPU的运算。后面的torch的内存模型以NCHW为主,因为在GPU上运算,NCHW更快
N代表数量, C代表channel,H代表高度,W代表宽度。可参考:https://www.baifachuan.com/posts/be183ef2.html
然后,简单了解深度学习框架Caffe/CNTK/Tensorflow/Theano/Torch/keras
框架 | 特点1 | 特点2 |
---|---|---|
cafe | 第一个(2013年)主流的工业级深度学习工具 | 基于C++所以跨平台性很好 |
CNTK | 没有python或任何其他高级语言的接口 | 不支持ARM,限制了其在移动设备上能力 |
tensorFlow | 递归神经网络RNN的API和实现 | 深度学习入门常用,python和C++接口,好像支持windows |
Theano | 支持pyhon接口 | |
Torch | 对卷积网络支持非常好 | 非主流语言Lua的LuaJIT上 |
另外,我们常说用TensorFlow进行深入学习入门,但实际敲代码的时候import的却是keras,这2者有什么关系呢?
Keras是基于TensorFlow和Theano(由加拿大蒙特利尔大学开发的机器学习框架)的深度学习库,是由纯python编写而成的高层神经网络API,也仅支持python开发。它是为了支持快速实践而对tensorflow或者Theano的再次封装,让我们可以不用关注过多的底层细节,能够把想法快速转换为结果。它也很灵活,且比较容易学。Keras默认的后端为tensorflow,如果想要使用theano可以自行更改。tensorflow和theano都可以使用GPU进行硬件加速,往往可以比CPU运算快很多倍。因此如果你的显卡支持cuda的话,建议尽可能利用cuda加速模型训练。(当机器上有可用的GPU时,代码会自动调用GPU 进行并行计算。)
Keras已经被TensorFlow收录,添加到TensorFlow 中,成为其默认的框架,成为TensorFlow官方的高级API。
卷积神经网络
好处在于参数共享,自动提取特征以及平移不变性,保留了矩阵中各参数的空间关系。同时与全连接神经网络相比,权值少,可以实现降维操作。
传统矩阵与卷积的关系是什么?
二维以上卷积就是做的矩阵乘法(输入数据*滤波器/卷积核)
参考文献
https://www.zhihu.com/question/19903344
https://blog.csdn.net/zuochao_2013/article/details/72377224
https://baijiahao.baidu.com/s?id=1726788237345698375&wfr=spider&for=pc
网友评论