欢迎来到皮皮网网站!

【易语言验证码输入源码】【plc源码松下】【rust源码解析】pytorch loss源码

时间:2024-12-26 03:10:22 来源:crmPHP网站源码系统

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。

       重点函数三:将模型的plc源码松下参数转化为fp或者fp等,内部会遍历其子module。

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

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

       在类图中,PyTorch的rust源码解析算子都是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是否是这样的操作)。

更多相关资讯请点击【焦点】频道>>>