2022-08-01深度学习2-一些概念不懂

首先,明白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

你可能感兴趣的:(2022-08-01深度学习2-一些概念不懂)