燎原的火种:PyTorch

Torch是一个用于机器学习和科学计算的模块化库,最初是NYU的研究人员为了学术研究而开发的。Torch利用LuaJIT编译器提高性能,并且可以通过Nivida CUDA扩展使用GPU加速。PyTorch有两种变体,一种是使用基于Torch框架的Python包装,一种是利用Python全新实现的Torch。这里所说的PyTorch就是第二种实现,PyTorch不仅保留了基于GPU的硬件加速,还提供了向后兼容的特性。

大部分使用计算图表的深度学习框架都会在运行之前生成和分析图表,但PyTorch在运行期间使用反向模式自动微分来构建图表。所以对模型的随意更改不会增加运行时间延迟和重建模型的开销。并且这种动态图表功能使PyTorch能够处理可变长度输入和输出。

PyTorch没有使用单一的后端,根据CPU和GPU的不同功能特性使用了单独的后端,这种模式使将PyTorch部署在资源受限的系统上变得更加容易。

PyTorch在使用时一般需要安装torchtorchvision两个包,一般可以使用pip直接进行安装。PyTorch网站根据不同的系统和系统特性会自动给出安装命令,针对自己系统的安装命令,可以直接到PyTorch查看。其中torchvision包中主要包含了流行数据集、模型结构和图片转换工具等。

PyTorch相比TensorFlow,训练速度要更加快一些,相比Keras则要快许多,虽然Keras是采用TensorFlow为后端。PyTorch比Keras更加低级,但又提供了更加方便的模型调整能力,相比TensorFlow要更加容易学习。