最初,PyTorch是由Hugh Perkins开发的,作为基于Torch框架的lujit的Python包装器。有两个PyTorch变体。
PyTorch用Python重新设计和实现Torch,同时为后端代码共享相同的核心C库。PyTorch开发人员对此后端代码进行了优化,以有效地运行Python。他们还保留了基于GPU的硬件加速以及Lua-based Torch的扩展特性。
1、功能特性
Easy Interface :PyTorch 提供易于使用的 API;因此它被认为在 Python 上操作和运行非常简单。这个框架中的代码执行非常简单。
使用Python :这个库是Python的,可以与Python数据科学堆栈顺利集成。因此,它可以利用Python环境提供的所有服务和功能。
计算图(Computational graphs):PyTorch提供了一个提供动态计算图的优秀平台。因此,用户可以在运行时更改它们。当开发人员不知道创建一个神经网络模型需要多少内存时,这非常有用。
PyTorch有以下三个层次的抽象:
1)Tensor(张量)
在GPU上运行的命令式n维数组。
2)Variable(变量)
计算图中的节点。这存储了数据和梯度。
3)Module(模块)
神经网络层将存储状态或可学习的权值。
2、PyTorch的优点
下面是PyTorch的优点:
1)很容易调试和理解代码。
2)它包括许多层,如Torch。
3)它包括很多 loss函数。
4)它可以被认为是NumPy对gpu的扩展。
5)它允许建立网络,其结构依赖于计算本身。
3、TensorFlow 与 PyTorch 区别
TensorFlow和PyTorch之间的主要区别如下:
PyTorch | TensorFlow |
PyTorch与Facebook中 积极使用的基于lua的Torch框架密切相关。 | TensorFlow 由 Google Brain 开发, 并在 Google 积极使用。 |
与其他竞争技术相比,PyTorch 相对较新。 | TensorFlow并不是一个新的工具, 很多研究人员和行业专业人士都认为, 它是一个可以随身携带的工具。 |
PyTorch 以命令式和动态方式包含所有内容。 | TensorFlow 包含静态和动态图的组合。 |
PyTorch 中的计算图是在运行时定义的。 | TensorFlow 不包含任何运行时选项。 |
PyTorch 包括针对移动和嵌入式框架的部署。 | TensorFlow 更适用于嵌入式框架。 |