几种常用深度学习框架简介

  • 一、TensorFlow
  • 1.1 Tensorflow简介
  • 1.2 使用文档
  • 1.3 预训练模型
  • 二、Pytorch
  • 2.1 Pytorch简介
  • 2.2 使用文档
  • 2.3 预训练模型
  • 三、Caffe架构
  • 3.1 Caffe简介
  • 3.2 使用文档
  • 3.3 预训练模型
  • 四、Keras架构
  • 4.1 Keras简介
  • 4.2 使用文档
  • 4.3 预训练模型
  • 其他架构
  • 参考文档

一、TensorFlow

1.1 Tensorflow简介

Google在2015年11月正式开源发布TensorFlow,TensorFlow由Google大脑团队开发,其命名来源于本身的运行原理。

TensorFlow的编程接口支持C++和Python,Java、Go、R和Haskell API也将被支持,是所有深度学习框架中对开发语言支持的最全面的,TensorFlow可以在AWS和Google Cloud中运行,支持Windows 7、Windows 10、Windows Server 2016,TenserFlow使用C++ Eigen库,可以在ARM架构上编译和优化,使其可以在各种服务器和移动设备上部署自己的训练模型,也是在所有深度学习框架中支持运行平台最多的。

它在GitHub上的地址是https://github.com/tensorflow/tensorflow,安装方法见上面介绍或者官网介绍。

深度生成模型总览 深度模型框架_神经网络

1.2 使用文档

使用文档见官网,或者 官方文档中文版。

1.3 预训练模型

TensorFlow预训练模型见https://github.com/tensorflow/models/tree/master/research/slim,包含常用的 VGG,Inception,ResNet,MobileNet 以及最新的 NasNet 模型等。

二、Pytorch

2.1 Pytorch简介

PyTorch是Facebook开发的用于训练神经网络的Python包,也是Facebook倾力打造的首选深度学习框架,在2017年1月首次推出。Facebook用Python重写了基于Lua语言的深度学习库Torch,PyTorch不是简单的封装Torch提供Python接口,而是对Tensor上的全部模块进行了重构,新增了自动求导系统,使其成为最流行的动态图框架。

Pytorch在GitHub上的地址为https://github.com/pytorch/pytorch,根据上面介绍,其支持Windows和Linux安装,安装方法见说明。

深度生成模型总览 深度模型框架_神经网络_02

2.2 使用文档

Pytorch1的使用文档可以参照官网介绍,也可以查看中文文档。

2.3 预训练模型

常用预训练模型在这里面:https://github.com/pytorch/vision/tree/master/torchvision/models,但是上述网址只有常见的 backbone (vgg, resnet, densenet, alexnet),在 GitHub 上,还找到了一个项目,提供 NASNet, ResNeXt, ResNet, InceptionV4, InceptionResnetV2, Xception, DPN 等预训练模型的下载:https://github.com/Cadene/pretrained-models.pytorch 具体下载位置是:https://data.lip6.fr/cadene/pretrainedmodels/。

三、Caffe架构

3.1 Caffe简介

Caffe的全称是Convolutional Architecture for Fast Feature Embedding,意为“用于特征提取的卷积架构”,它是一个清晰、高效的深度学习框架,核心语言是C++。 Caffe有多个分支版本,各个版本安装方法也不一致,需要单独进行编译,所以安装过程较其他几种架构较为复杂。 Caffe不支持分布式,与其它更新的深度学习框架相比,Caffe确实不够灵活,文档也不够用,Caffe的安装也比较复杂,安装需要解决大量的依赖包。大家会发现套用原有模型很方便,但个性化就要读源代码,灵活性明显不足,为模型做调整常常需要用 C++ 和 CUDA编程官方版本:伯克利BVLC(Berkeley Vision And Learning Center) 版https://github.com/BVLC/caffe 这个是Caffe的主版本,由伯克利大学维护。其他所有的Caffe版本都是由这个版本分支出去的。这个版本Caffe可以编译出Linux和Windows*版本,支持Nvidia的CUDA加速,但是对CPU的优化不好,而且有关安装和配置的文档很少。从这个版本编译Caffe,需要很强的自我学习和解决问题能力。

微软的Windows*版本https://github.com/Microsoft/caffe 微软自己维护的一个版本。这个版本简化了Caffe在Windows*下的步骤,自带了一个VS的Solution项目。这个版本同样支持基于CPU和CUDA的算法实现。

Intel Caffe优化版https://github.com/intel/caffe Intel维护的版本,这个版本优化了Intel CPU的实现算法,同时提供对Intel Xeon CPU多核和多节点的支持。这个版本里有些算法库对Windows*支持不太好,所以这个分支编译出的Caffe主要还是运行在Linux的服务器平台上做训练工作。

Intel clCaffe 核显OpenCL优化版

https://github.com/01org/caffe Intel维护的另一个版本,相对于官网BVLC Caffe上的OpenCL分支,优化了基于Intel 核显GPU的OpenCL加速算法。这个版本同时支持Windows* 和Linux平台,适合在有Intel核显的CPU上做一些推理(Inference)场景的工作。

深度生成模型总览 深度模型框架_深度生成模型总览_03

3.2 使用文档

Caffe使用文档见官网,也可以参考Caffe官方教程中译本。

3.3 预训练模型

Caffe预训练模型使用说明查看官网简介,文件下载地址如下:http://dl.caffe.berkeleyvision.org/

四、Keras架构

4.1 Keras简介

Keras是一个高层神经网络API,Keras由纯Python编写而成并基Tensorflow、Theano以及CNTK后端。Keras 为支持快速实验而生,能够快速地搭建出来一个神经网络,它具有以下特点:

1、简易和快速的原型设计(keras具有高度模块化,极简,和可扩充特性)

2、支持CNN和RNN,或二者的结合

3、无缝CPU和GPU切换

学习使用Keras很容易,但是大多数时间都在学习如何调用接口,难以真正学习到深度学习的内容,Keras层层封装让用户在新增操作或获取底层的数据信息时过于困难,存在过度封装导致缺乏灵活性的问题,性能也存在瓶颈。Keras有助于快速入门,但是不应该依赖它,需要进一步学习使用TensorFlow。

Keras适用的Python版本是:Python 2.7-3.6,它在GitHub上的网址为keras-team/keras。根据官网介绍,最新的2.4.0版本不再支持多后端,而只支持TensorFlow2.0,Keras 2.3.x版本将成为最后一个同时支持TensorFlow、Theano与CNTK这三种后端的版本。

深度生成模型总览 深度模型框架_深度学习_04

4.2 使用文档

keras官方中文文档链接:https://keras.io/zh/

官方中文文档对应的Github:https://github.com/keras-team/keras-docs-zh/。

4.3 预训练模型

Keras 的应用模块(keras.applications)提供了带有预训练权值的深度学习模型,这些模型可以用来进行预测、特征提取和微调(fine-tuning)。 当你初始化一个预训练模型时,会自动下载权重到 ~/.keras/models/ 目录下。 在使用时可能存在由于网络传输速率慢下载失败的问题,这时可以手动下载模型文件,GitHub下载地址如下:https://github.com/fchollet/deep-learning-models/releases 如何快速下载GitHub文件,请参考本博客另一篇文章。 但是使用离线下载的模型文件可能不是最新版keras指定的模型,所以可能会无法使用,具体以使用为准。

其他架构

深度学习还有很多其他架构,如Amazon选择押注的MXNet,Microsoft内部开源的CNTK等等,想要了解这些架构,可以参照深度学习框架的来龙去脉——史上最全面最新的深度学习框架对比分析,就不再在本文一一介绍了。

参考文档

TensorFlow 使用预训练模型 ResNet-50Pytorch 预训练模型下载和加载Caffe的各个版本简介Keras中文文档【Keras】常用的预训练模型权重下载及使用深度学习框架的来龙去脉——史上最全面最新的深度学习框架对比分析深度学习框架比较,Caffe/Tensorflow/ Keras有何不同?