PyTorch学习笔记1--PyTorch简介
本笔记参考资料:
- https://github.com/zergtant/pytorch-handbook;
- PyTorch官方教程中文版.
- https://zhuanlan.zhihu.com/p/28636490.
相信你肯定已经了解过Tensorflow的笔记了。 本笔记特别适合于从Tensorflow框架转移到PyTorch上的科研人员和学生等等。
从前的从前有座山,山上有座庙,庙里有个老和尚...
打住
PyTorch基本概念
Torch是用一种叫做Lua的编程语言写的,类似Numpy的张量(Tensor)操作,有大量机器学习算法支持的科学计算框架。由于是Lua这个小众语言编写,流行度不高。
而PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序。
注:PyTorch和Torch使用包含所有相同性能的C库:TH, THC, THNN, THCUNN,并且它们将继续共享这些库。
这样的回答就很明确了,其实PyTorch和Torch都使用的是相同的底层,只是使用了不同的上层包装语言。LUA虽然快,但是太小众了,所以才会有PyTorch的出现。
PyTorch的主要特点
PyTorch提供了两个高级功能:
- 具有强大的GPU加速的张量计算(如Numpy)
- 包含自动求导系统的深度神经网络
PyTorch的上手时间
PyTorch本质上是Numpy的替代者,而且支持GPU、带有高级功能,可以用来搭建和训练深度神经网络。如果你熟悉Numpy、Python以及常见的深度学习概念(卷积层、循环层、SGD等),会非常容易上手PyTorch。
PyTorch与TensorFlow
- 计算图:创建和运行计算图可能是两个框架最不同的地方。在PyTorch中,图结构是动态的,这意味着图在运行时构建。而在TensorFlow中,图结构是静态的,这意味着图先被“编译”然后再运行。
- 设备管理:TensorFlow的设备管理非常好用。通常你不需要进行调整,因为默认的设置就很好。例如,TensorFlow会假设你想运行在GPU上(如果有的话)。而在PyTorch中,即使启用了CUDA,你也需要明确把一切移入设备。
- 可视化:TensorBoard是TensorFlow自带的可视化工具,用来查看机器学习训练过程中数据的变化。通过训练脚本中的几个代码段,你可以查看任何模型的训练曲线和验证结果。TensorBoard作为web服务运行,特别便于对于无头结点上存储的结果进行可视化。对于PyTorch,借助两个开源项目可以实现。第一个是tensorboard_logger,第二个是crayon。tensorboard_logger库用起来甚至比TensorBoard的“摘要”更容易,尽管想用这个首先得安装TensorBoard。crayon可以完全替代TensorBoard,但是需要更多的设置(docker是先决条件)。
- 平台部署:对于小规模的服务器端部署(例如一个Flask web server),两个框架都很简单。对于移动端和嵌入式部署,TensorFlow更好。不只是比PyTorch好,比大多数深度学习框架都要要。使用TensorFlow,部署在Android或iOS平台时只需要很小的工作量,至少不必用Java或者C++重写模型的推断部分。
总地来说:PyTorch更有利于研究人员、爱好者、小规模项目等快速搞出原型。而TensorFlow更适合大规模部署,特别是需要跨平台和嵌入式部署时。