PyTorch库简介总结 | 《PyTorch 深度学习实战》

PyTorch是一个python程序库,有助于构建深度学习项目。它强调灵活性,并且允许python来表示深度学习模型。

PyTorch易于学习、使用、扩展和调试。在PyTorch中为我们提供了一种数据类型张量,通常用来存储数字、向量、矩阵和数组。

PyTorch具备两个特性

1.使用GPU加速计算,通常比在CPU上执行相同的计算速度快50倍。

2.PyTorch提供了支持通用数学表达式数值优化的工具,该工具用于训练深度学习模型。

Theano是最早使用的深度学习框架之一,它使用一个模型让用户自定义一个计算图并执行,目前Theano已经停止开发。Torch则是以Lua为基础开发的PyTorch的前身。而PyTorch替换了从基于Lua的Torch项目重用的大多数低级别的代码,并且Caffe2作为后端模块完全并入PyTorch,增加对开放式神经网络交换的支持,增加一种称为“TorchScript”的延迟执行的“图模型”运行环境。

PyTorch如何支持深度学习概述

PyTorch中的“py”是指Python但实际上还包含了许多的非Python代码。PyTorch大部分是用C++和CUDA编写,而CUDA则是英伟达公司所开发的一款类C++语言,它可以被编译在GPU上以并行方式运行。PyTorch还可以直接在C++环境中运行目的是为生产环境中部署模型提供可靠的策略。

PyTorch核心是由一个提供多维数组(张量)以及由torch模块提供操作的库。PyTorch提供的第2个核心功能是张量的能力,它可以跟踪在张量上执行的操作,并分析和计算任意输入对应输出的导数。此功能用于数据优化,是由张量自身提供的,通过PyTorch底层自动求导引擎调度。通过使用张量以及张量自动求导的标准库,PyTorch

可以用于物理学、渲染、优化、仿真、建模等。

PyTorch项目的基础

首先,需要从外部获取数据,通常是从作为数据源的某种存储中获取。然后需要将数据中的样本转化为张量。由于不同问题处理过程不同,因此需要自己定义数据源。自定义数据和标准化的PyTorch张量之间的桥梁是PyTorch在torch.utiCls.data中提供的Dataset类。

由于数据存储很慢且存在延迟,但是PyTorch提供的许多操作都不具备简单、高效的并行处理能力,因此需要多个进程加载数据,以便将它们组装成批次,即组装成一个包含多个样本的张量。

在训练循环中,根据从数据加载器获得的样本来评估模型。然后使用一些评估指标或损失函数将模型的输出与期望输出进行比较。在使用损失函数将实际输出与期望输出进行比较之后,还需要稍微修改模型使其输出更接近目标。而PyTorch有各种损失函数供我们使用,torch.nn包中也提供这些函数。但是还需要一个优化器来进行更新,这是PyTorch在torch.optim中所提供的。

部署操作中一个特定的步骤是导出模型。PyTorch默认为立即执行模式也就是急切模式。当python解释器执行一个涉及PyTorch的指令时,相应的操作会立刻被底层的C++或CUDA的实现来执行。随着对张量进行操作的指令越来越多,后端实现将执行更多操作。

PyTorch还有一种通过TorchScript提前编译模型的方法,使用TorchScript ,PyTorch可以将模型序列化为一组独立于python调用。我们可以把模型想象成一个具有有限指令的虚拟机,用于特定的张量操作。这允许我们导出我们的模型,或者将其作为用于PyTorch运行时的TorchScript导出,或者将其以一种称为ONNX的标准格式导出。这些特性是PyTorch生产部署的基础。

关于训练在GPU上运行至少可以减少一个数量级的训练时间(通常为40~50倍)。单独来看,计算参数更新所需的操作在CPU上执行得非常快,但问题是训练需要反复执行这些操作,不断更新网络参数,以减少训练误差。如果没有GPU许多云平台都提供预装有PyTorch的、支持GPU的Jupyter Notebook,且通常提供一定的免费配额。例如谷歌的Colaboratory。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值