Pytorch 里面model部分属性简析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pytorch 里面model部分属性简析相关的知识,希望对你有一定的参考价值。
参考技术A 随手定义一个model,首先查看下model 都有哪些属性和方法我们可以看到model有许多的属性,其中有children/named_children, parameters/named_parameters, modules/named_modules
这里先介绍一下,children 这个方法,会返回一个生成器,如果用for循环打开这样一个生成器,会得到一串,我们在模型类中初始化定义的block,conv和classifier,至于block中的二级各种module都不会被进一步展开。是一个很compact的表示。至于named_children()就是会给这些一级module 分别赋予名字,这样更好描述。
至于module这个方法,也会生成一个生成器,用for循环打开这样的生成器,首先可以得到model的一级module,然后一级module都展示完毕以后,会再把二级module里面的成分展开,比如block里面,有conv,maxpool,bn这些。
至于parameters 这个方法,返回的是一个生成器,如果用for循环打开,可以得到module的所有抽象参数位,这里的parameters 需要和argument 区分一下,前者是概念性的参数,后面的是,具体赋值以后的参数。对于parameters可以做的主要操作就是控制导数是否需要计算,最后是否需要更新。
至于state_dict 这个方法,会返回一个字典,字典的键值对分别是,参数的名称和参数赋值的tensor,我们每一次load_state_dict 也是加载这样一个字典,来获得预加载模型的各个module和配置的参数。
至于 eval 和 train 这两个方法,前者是模型在validation阶段时,设置model 不自动更新参数,进行model 评价验证的方法,后者是模型在train阶段时,设置model可以进行参数的迭代更新。
至于to这个方法,是决定把模型或者输入的数据放在CPU还是CPU上面,这个模型和数据必须在同一个设备上面,不然会报错。
以上是关于Pytorch 里面model部分属性简析的主要内容,如果未能解决你的问题,请参考以下文章
论文简析+解读+Pytorch实现PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation