欢迎来到皮皮网网首页

【热门程序源码】【相机外部触发源码】【gui点餐系统源码】pytorch loss源码

来源:快递全自动分拣软件源码 时间:2024-12-24 01:53:49

1.PyTorch 源码分析(一):torch.nn.Module

pytorch loss源码

PyTorch 源码分析(一):torch.nn.Module

       nn.Module是PyTorch中最核心和基础的结构,它是操作符/损失函数的基类,同时也是组成各种网络结构的基类(实际上是由多个module组合而成的一个module)。

       在Python侧,热门程序源码2.1回调函数注册,2.2 module类定义中,有以下几个重点函数:

       重点函数一:将模型的参数移动到CUDA上,内部会遍历其子module。

       重点函数二:将模型的参数移动到CPU上,内部会遍历其子module。

       重点函数三:将模型的相机外部触发源码参数转化为fp或者fp等,内部会遍历其子module。

       重点函数四:forward函数调用。

       重点函数五:返回该net的所有layer。

       在类图中,PyTorch的gui点餐系统源码算子都是module的子类,包括自定义算子和整网定义。

       在C++侧,3.1 module.to("cuda")详细分析中,本质是将module的parameter&buffer等tensor移动到CUDA上,最终调用的手机号验证源码是tensor.to(cuda)。

       3.2 module.load/save逻辑中,PyTorch模型保存分为两种,一种是纯参数,一种是带模型结构(PyTorch中的模型结构,本质上是主力轨迹线公式源码由module、sub-module构造的一个计算图)。

       parameter、buffer是通过key-value的形式来存储和检索的,key为module的.name,value为存储具体数据的tensor。

       InputArchive/OutputArchive的write和read逻辑。

       通过Module,PyTorch将op/loss/opt等串联起来,类似于一个计算图。基于PyTorch构建的ResNet等模型,是逐个算子进行计算的,tensor在CPU和GPU之间来回流动,而不是整个计算都在GPU上完成(即中间计算结果不出GPU)。实际上,在进行推理时,可以构建一个计算图,让整个计算图的计算都在GPU上完成,不知道是否可行(如果GPU上有一个CPU就可以完成这个操作,不知道tensorrt是否是这样的操作)。