本文介绍深度学习的框架指南,基本是免费和开源的。
包括:Keras、PyTorch、TensorFlow、Theano、MXNet、Caffe2、CNTK、Chainer等。
文章结构分为“目录版”和“简介版”。
目录版
1 Keras
- 目前已经合并到TensorFlow2.x中,使用和之前一样便捷且高效。
- Keras - 一种高级神经网络 API,用 Python 编写,能够在 TensorFlow、CNTK 或 Theano 之上运行
- keras-contrib - Keras 社区贡献
- Hyperas - Keras + Hyperopt:一个非常简单的超参数包装器
- Elephas - 使用 Keras 和 Spark 进行分布式深度学习
- Hera - 训练/评估 Keras 模型,将指标流式传输到浏览器中的仪表板。
- dist-keras - 分布式深度学习,专注于分布式训练
- Conx - 深度学习的入口
2 PyTorch
- PyTorch - Python 中的张量和动态神经网络,具有强大的 GPU 加速
- torchvision - 特定于计算机视觉的数据集、转换和模型
- torchtext - 文本和 NLP 的数据加载器和抽象
- torchaudio - PyTorch的音频库
- ignite - 帮助在 PyTorch 中训练神经网络的高级库
- PyToune - PyTorch的类似 Keras 的框架和实用程序
- skorch - 包装 pytorch 的 scikit-learn 兼容神经网络库
- PyTorchNet - 训练神经网络的抽象
- Aorun - 打算使用 PyTorch 作为后端实现类似于 Keras 的 API。
- pytorch_geometric - PyTorch 的几何深度学习扩展库
3 TensorFlow
- TensorFlow - Google 使用数据流图进行可扩展机器学习的计算
- TensorLayer - 面向研究人员和工程师的深度学习和强化学习库。
- TFLearn - 深度学习库,具有更高级别的 TensorFlow API
- Sonnet - DeepMind基于 TensorFlow 的神经网络库
- TensorForce - 一个用于应用强化学习的 TensorFlow 库
- tensorpack - TensorFlow 上的神经网络训练接口
- Polyaxon - 一个帮助我们构建、管理和监控深度学习模型的平台
- Horovod - TensorFlow 的分布式训练框架
- tfdeploy - 部署张量流图以进行快速评估并导出到运行 numpy 的无张量流环境
- hiptensorflow ![alt text][amd] - 启用 ROCm/HIP 的 Tensorflow
- TensorFlow Fold - 使用 TensorFlow 中的动态计算图进行深度学习
- tensorlm - 带有 RNN 的字符和单词级别的文本生成/语言模型的包装库
- TensorLight - TensorFlow 的高级框架
- Mesh TensorFlow - 模型并行变得更容易
4 Theano
警告:Theano 开发已停止
- Theano - 是一个 Python 库,允许我们定义、优化和评估数学表达式
- Lasagne - 在 Theano Lasagne 附加组件中构建和训练神经网络的轻量级库...
- nolearn - scikit-learn 兼容的神经网络库(主要用于千层面)
- Blocks - 用于构建和训练神经网络的 Theano 框架
- platoon - Theano 的多 GPU 迷你框架
- NeuPy - NeuPy 是一个用于人工神经网络和深度学习的 Python 库
- scikit-neuralnetwork - 没有学习悬崖的深度神经网络
- Theano-MPI - 用于训练在 Theano 中构建的深度学习模型的 MPI 并行框架
5 MXNet
- MXNet - 具有动态、变异感知数据流调度器的轻量级、便携、灵活的分布式/移动深度学习
- Gluon - 一个清晰、简洁、简单但功能强大且高效的深度学习 API(现已包含在 MXNet 中)
- MXbox - 用于 mxnet 框架的简单、高效和灵活的视觉工具箱。
- gluon-cv - 提供计算机视觉中最先进的深度学习模型的实现。
- gluon-nlp - NLP 变得简单
- MXNet ![alt text][amd] - MXNet 的 HIP 端口
6 Caffe2
7 CNTK
- CNTK - Microsoft Cognitive Toolkit (CNTK),一个开源深度学习工具包
8 Chainer
- Chainer - 一个灵活的神经网络框架
- ChainerRL - 建立在Chainer 之上的深度强化学习库。
- ChainerCV - 计算机视觉深度学习库
- ChainerMN - 使用Chainer 进行可扩展的分布式深度学习
- scikit-chainer - 类似于 scikit- learn 的 chainer接口
- chainer_sklearn - 类似于 Chainer 的 Sklearn(Scikit-learn)接口
9 其他
- Neon - 致力于在所有硬件上实现最佳性能的英特尔 Nervana™ 参考深度学习框架
- Tangent - 纯 Python 中的源到源可调试派生
- autograd - 有效地计算 numpy 代码的导数
- Myia - 深度学习框架(pre-alpha)
- nnabla - 索尼的神经网络库
简介版
1 Keras
Keras 是一个用 Python 编写的深度学习 API,运行在机器学习平台TensorFlow之上。它的开发重点是实现快速实验。
(目前已经合并到TensorFlow2.x中,使用和之前一样便捷且高效。)
Keras 和 TensorFlow 2
TensorFlow 2是一个端到端的开源机器学习平台。我们可以将其视为可微分编程的基础设施层 。它结合了四个关键能力:
- 在 CPU、GPU 或 TPU 上高效执行低级张量运算。
- 计算任意可微表达式的梯度。
- 将计算扩展到许多设备,例如数百个 GPU 的集群。
- 将程序(“图形”)导出到外部运行时,例如服务器、浏览器、移动设备和嵌入式设备。
Keras 是 TensorFlow 2 的高级 API:一个用于解决机器学习问题的平易近人、高效的接口,专注于现代深度学习。它为开发和交付具有高迭代速度的机器学习解决方案提供了必要的抽象和构建块。
Keras 使工程师和研究人员能够充分利用 TensorFlow 2 的可扩展性和跨平台功能:我们可以在 TPU 或大型 GPU 集群上运行 Keras,可以导出Keras 模型以在浏览器或移动设备上运行设备。
- Keras - 一种高级神经网络 API,用 Python 编写,能够在 TensorFlow、CNTK 或 Theano 之上运行
- keras-contrib - Keras 社区贡献
- Hyperas - Keras + Hyperopt:一个非常简单的超参数包装器
- Elephas - 使用 Keras 和 Spark 进行分布式深度学习
- Hera - 训练/评估 Keras 模型,将指标流式传输到浏览器中的仪表板。
- dist-keras - 分布式深度学习,专注于分布式训练
- Conx - 深度学习的入口
2 PyTorch
PyTorch 是一个 Python 包,它提供了两个高级功能:
- 具有强大 GPU 加速的张量计算(如 NumPy)
- 基于磁带的 autograd 系统构建的深度神经网络
我们可以在需要时重用我们最喜欢的 Python 包(例如 NumPy、SciPy 和 Cython)来扩展 PyTorch。
- PyTorch - Python 中的张量和动态神经网络,具有强大的 GPU 加速
- torchvision - 特定于计算机视觉的数据集、转换和模型
- torchtext - 文本和 NLP 的数据加载器和抽象
- torchaudio - PyTorch的音频库
- ignite - 帮助在 PyTorch 中训练神经网络的高级库
- PyToune - PyTorch的类似 Keras 的框架和实用程序
- skorch - 包装 pytorch 的 scikit-learn 兼容神经网络库
- PyTorchNet - 训练神经网络的抽象
- Aorun - 打算使用 PyTorch 作为后端实现类似于 Keras 的 API。
- pytorch_geometric - PyTorch 的几何深度学习扩展库
3 TensorFlow
TensorFlow是一个端到端的机器学习开源平台。它拥有一个由工具、 库和 社区资源组成的全面、灵活的生态系统 ,使研究人员能够推动 ML 的最新技术,而开发人员可以轻松构建和部署 ML 驱动的应用程序。
TensorFlow 最初由 Google 机器智能研究组织内的 Google Brain 团队的研究人员和工程师开发,用于进行机器学习和深度神经网络研究。该系统的通用性足以适用于各种其他领域。
TensorFlow 提供稳定的Python 和C++ API,以及其他语言的非保证向后兼容 API 。
- TensorFlow - Google 使用数据流图进行可扩展机器学习的计算
- TensorLayer - 面向研究人员和工程师的深度学习和强化学习库。
- TFLearn - 深度学习库,具有更高级别的 TensorFlow API
- Sonnet - DeepMind基于 TensorFlow 的神经网络库
- TensorForce - 一个用于应用强化学习的 TensorFlow 库
- tensorpack - TensorFlow 上的神经网络训练接口
- Polyaxon - 一个帮助我们构建、管理和监控深度学习模型的平台
- Horovod - TensorFlow 的分布式训练框架
- tfdeploy - 部署张量流图以进行快速评估并导出到运行 numpy 的无张量流环境
- hiptensorflow ![alt text][amd] - 启用 ROCm/HIP 的 Tensorflow
- TensorFlow Fold - 使用 TensorFlow 中的动态计算图进行深度学习
- tensorlm - 带有 RNN 的字符和单词级别的文本生成/语言模型的包装库
- TensorLight - TensorFlow 的高级框架
- Mesh TensorFlow - 模型并行变得更容易
4 Theano
警告:Theano 开发已停止
- Theano - 是一个 Python 库,允许我们定义、优化和评估数学表达式
- Lasagne - 在 Theano Lasagne 附加组件中构建和训练神经网络的轻量级库...
- nolearn - scikit-learn 兼容的神经网络库(主要用于千层面)
- Blocks - 用于构建和训练神经网络的 Theano 框架
- platoon - Theano 的多 GPU 迷你框架
- NeuPy - NeuPy 是一个用于人工神经网络和深度学习的 Python 库
- scikit-neuralnetwork - 没有学习悬崖的深度神经网络
- Theano-MPI - 用于训练在 Theano 中构建的深度学习模型的 MPI 并行框架
5 MXNet
Apache MXNet 是一个为提高效率和灵活性而设计的深度学习框架。它允许我们混合 符号和命令式编程, 以最大限度地提高效率和生产力。在其核心,MXNet 包含一个动态依赖调度程序,可自动动态并行化符号和命令式操作。在其之上的图形优化层使符号执行速度快且内存高效。MXNet 便携且轻量级,可扩展到许多 GPU 和机器。
MXNet 不仅仅是一个深度学习项目。它是一个 以实现人工智能民主化为使命的社区。它是 构建深度学习系统的蓝图和指南的集合,以及针对黑客的 DL 系统的有趣见解。
- MXNet - 具有动态、变异感知数据流调度器的轻量级、便携、灵活的分布式/移动深度学习
- Gluon - 一个清晰、简洁、简单但功能强大且高效的深度学习 API(现已包含在 MXNet 中)
- MXbox - 用于 mxnet 框架的简单、高效和灵活的视觉工具箱。
- gluon-cv - 提供计算机视觉中最先进的深度学习模型的实现。
- gluon-nlp - NLP 变得简单
- MXNet ![alt text][amd] - MXNet 的 HIP 端口
6 Caffe2
Caffe 是一个深度学习框架,考虑到了表达、速度和模块化。它由伯克利人工智能研究 ( BAIR )/伯克利视觉与学习中心 (BVLC) 和社区贡献者开发。
自定义分布:Intel Caffe(针对 CPU 进行了优化并支持多节点),尤其是 Intel® Xeon 处理器。OpenCL Caffe例如用于 AMD 或 Intel 设备。
7 CNTK
- CNTK - Microsoft Cognitive Toolkit (CNTK),一个开源深度学习工具包
Microsoft 认知工具包是一个统一的深度学习工具包,它通过有向图将神经网络描述为一系列计算步骤。在这个有向图中,叶节点表示输入值或网络参数,而其他节点表示对其输入的矩阵运算。
CNTK 允许用户轻松实现和组合流行的模型类型,例如前馈 DNN、卷积网络 (CNN) 和循环网络 (RNN/LSTM)。它通过跨多个 GPU 和服务器的自动微分和并行化实现随机梯度下降(SGD,误差反向传播)学习。
8 Chainer
Chainer是一个基于 Python 的深度学习框架,旨在提高灵活性。它提供基于运行定义方法(又名动态计算图)的自动微分 API以及面向对象的高级 API 来构建和训练神经网络。它还支持使用CuPy进行高性能训练和推理的CUDA/cuDNN 。
- Chainer - 一个灵活的神经网络框架
- ChainerRL - 建立在Chainer 之上的深度强化学习库。
- ChainerCV - 计算机视觉深度学习库
- ChainerMN - 使用Chainer 进行可扩展的分布式深度学习
- scikit-chainer - 类似于 scikit- learn 的 chainer接口
- chainer_sklearn - 类似于 Chainer 的 Sklearn(Scikit-learn)接口