漫谈常用深度学习框——Caffe/ TensorFlow / Keras/ PyTorch

释放双眼,带上耳机,听听看~!

0. 写作目的

通过对不同深度学习框架的学习,简单谈谈不同框架的区别。仅供参考。对不同框架讲解的顺序,依据笔者对不同框架的学习顺寻。

1. Caffe

Caffe作为入门级的深度学习框架,对于一般的深度学习任务,如图像分类/ 目标检测/ 实例分割等,存在已有的代码供大家参考,使得上手很快,需要新手修改的地方一般为配置文件,基本不需要书写代码。而且Caffe是基于C++的代码,因此训练方面很快。因此,作为新手入门这是一个很好的框架。适合新手作为入门了解深度学习,以及深度学习任务中的各参数

1) 优点

    ** i). 上手快,无需编写大量代码,即可迁移到自己的数据集**

    ** ii). 能快速了解入门深度学习**

   ** iii). 基于C++的开发,训练速度快**

但是Caffe的不足也很严重,主要有一下几个方面:

2) 不足

     i) 首先,虽然能较快入门,但对深度学习的细节认识不深,如果要深入理解,需要阅读源码,相比其他框架,比较困难

    ii) 如果要修改代码,需要对CPU版和GPU版同时修改,而且修改代码的时间相对较长,不利于快速实现新的想法

    iii) 最后,最让人头疼的是GPU版本的安装问题

对于Caffe的安装,很是让人头疼,如果感兴趣,可以参考我的博客: Caffe 安装 ubuntu14 + CUDA8.0 + CUDNN5.0(基于anaconda的环境)。

2. Keras 

Keras是基于Theano或者TensorFlow的高级深度学习框架,使用Keras有助于你快速构建神经网络。不需要去理会TensorFlow底层基于权值和偏值的构建。

1) 优点

**  i) 快速构建网络,实现自己的想法**

**  ii) 不用拘泥于底层的一些细节**

2) 不足

 ** i) 对于新的领域,可能更新较慢,此时自己写一些层或者其他东西,比较困难,如权值的共享,比较困难**

**   ii) 训练速度相对较慢**

3. TensorFlow

TensorFlow有高级的API,也有从零开始新建的权值和偏值,适合深入理解学习。

1) 优点

**   i) 既有高级的API,可以快速建立网络,如将Keras整合到TensorFlow中,tf.keras,也有TFLearn/ Slim等高级API供使用**

**              ii) 又能基于底层开始构建神经网络,适合深入学习,和添加一些新的网络层或者建立新的Loss函数**

**              iii) Google的大力支持,所以有很多学习资源**

        2) 不足

              i) 网络基于静态图,所有资源的计算都在图中计算,调试较麻烦,不容易找bug

**              ii) 个人感觉TensorFlow中对于同一个功能的函数存在多个,可能会导致新手学习时,不知所措**

**              iii) 国内IP不能访问英文版TensorFlow官网,将导致不能查看API,这个很难受**

4. PyTorch

最近刚使用了一下PyTorch,不得不说,封装得很好,构建自己的网络较快,适合新手。

1) 优点

 ** i) 能较快构建网络,新手入手较快**

**  ii) 将代码迁移至GPU较快,功能封装高**

2) 不足

**   封装过于高级,导致函数调用不清楚,不利于深入理解**

5. 总结

新手可以使用Caffe快速进行训练,新手使用Keras或者PyTorch进行快速构建自己的网络,想深入了解或者修改代码的可以学习TensorFlow。当然如果你对C++情有独钟,学习Caffe是个不错的选择。

 

 

给TA打赏
共{{data.count}}人
人已打赏
安全运维

MongoDB数据建模小案例:物联网时序数据库建模

2021-12-11 11:36:11

安全运维

Ubuntu上NFS的安装配置

2021-12-19 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索