PyTorch
在我所研究过的框架中,PyTorch最富灵活性。
PyTorch是Torch深度学习框架的一个接口,可用于建立深度神经网络和执行张量计算。Torch是一个基于Lua的框架,而PyTorch则运行在Python上。
PyTorch是一个Python包,它提供张量计算。张量是多维数组,就像numpy的ndarray一样,它也可以在GPU上运行。PyTorch使用动态计算图,PyTorch的Autograd软件包从张量生成计算图,并自动计算梯度。与特定功能的预定义的图表不同,PyTorch提供了一个框架,用于在运行时构建计算图形,甚至在运行时也可以对这些图形进行更改。当不知道创建神经网络需要多少内存的情况下,这个功能便很有价值。
可以使用PyTorch处理各种来自深度学习的挑战,包括:
- 影像(检测、分类等)
- 文本(NLP)
- 增强学习
Keras
如果你习惯使用python,那么可以立即上手到Keras。这是一个非常适合你的深度学习之旅的完美的框架。
Keras用Python编写,可以在TensorFlow(以及CNTK和Theano)之上运行。TensorFlow的接口具备挑战性,因为它是一个低级库,新用户可能会很难理解某些实现。而Keras是一个高层的API,它为快速实验而开发。因此,如果希望获得快速结果,Keras会自动处理核心任务并生成输出。Keras支持卷积神经网络和递归神经网络,可以在CPU和GPU上无缝运行。
深度学习的初学者经常会抱怨:无法正确理解复杂的模型。如果你是这样的用户,Keras便是你的正确选择!它的目标是最小化用户操作,并使其模型真正容易理解。
可以将Keras中的模型大致分为两类:
1. 序列化
模型的层是按顺序定义的。这意味着当我们训练深度学习模型时,这些层次是按顺序实现的。下面是一个顺序模型的示例:
from keras.models import Sequential from keras.layers import Dense model = Sequential() # we can add multiple layers to the model using .add() model.add(Dense(units=64, activation=‘relu’, input_dim=100)) model.add(Dense(units=10, activation=‘softmax’))
2. Keras 函数API
用于定义复杂模型,例如多输出模型或具有共享层的模型。请查看下面的代码来理解这一点:
from keras.layers import Input, Dense from keras.models import Model inputs = Input(shape=(100,)) # specify the input shape x = Dense(64, activation=‘relu’)(inputs) predictions = Dense(10, activation=‘softmax’)(x) model = Model(inputs=inputs, outputs=predictions)
PaddlePaddle
PaddlePaddle是百度提供的开源深度学习框架,致力于为开发者和企业提供最好的深度学习研发体验,框架本身具有易学、易用、安全、高效四大特性,是最适合中国开发者和企业的深度学习工具。
- 网址:http://www.paddlepaddle.org/zh
功能特点
•教程文档友好,提供jupyter文档
开源
•开源,代码在github上公开
• 社区活跃,合作伙伴支持,有很多的贡献者
速度快、方便
• 底层C++编写,运行速度快,占用内存少
• 接口Python,使用方便,开发便捷
分布式系统
• 底层硬件同时支持CPU和GPU
• 分布式系统,支持单机运行和云上运行
部署方便
• 支持docker部署和原生包部署
• 支持多操作系统windows、 macOS、 Linux
优势
提供搭建私有云的全套解决方案
- 帮助用户保护数据
- 充分支持分布式系统
- 模型并行和数据并行
灵活易用且性能高
- 支持多种机器学习和优化算法,可定 制
- 全面支持多机、多GPU环境,优化的 通信实现使高吞吐与高性能成为可能
MindSpore
教育部**-**华为“智能基座” 产教融合协同育人基地
MindSpore(AI框架):全场景AI框架(类似TensorFlow、Pytorch)
- https://www.mindspore.cn/
- MindSpore提供了Python编程范式
- MindSpore提供了动态图和静态图统一的编码方式
- 能够用串行算法代码,自动实现分布式并行训练
- 具备训练过程静态执行和动态调试能力,开发者通过变更一行代码 即可切换模式,快速在线定位问题
- 最佳匹配昇腾处理器,最大程度地发挥硬件能力,帮助开发者缩短 训练时间,提升推理性能
- 支持云、边缘和手机上的快速部署,实现更好的资源利用和隐私保 护