pytorch代码学习--类名作为函数参数传递&&其他语法知识

  我的python代码能力真的相当之差,几乎是一边看一边学。

  起因是《Neural Architecture Search as Program Transformation》这篇论文的学习,其中有几个点我不是很清楚,现在把学习到的东西记录一下。

  代码在https://github.com/jack-willturner/nas-as-program-transformation-exploration 

  1.__init__.py的作用

  2.

 

 

  这段代码的super是为了获取torch.nn.Moudle这个父类方法。

  3. 上图当中的def __init__()构造函数相关问题。

  4. 最重要的一点,python当中的类名作为函数参数传递的问题。

  这里的类名BasicBlock只在

  

  类ResNet的构造函数当中被调用。

  ResNet的构造函数如下图所示:

  

  可见类名BasicBlock传递进来成为了block这个东西。

  block又被ResNet当中的这个函数被调用:

  

  最终可以看到

  

  BasicBlock类需要的三个参数in_planes,planes,layer_config最终被Resnet当中的这些参数所满足。

 

  所以绕了很大弯路,在C++当中简直不敢想象。

 

  其实之前的https://www.cnblogs.com/theda/p/15367083.html这篇博客里,第一篇代码:

  

  已经实例化了类Net,但是实例化之后的类仍然能接收参数!

  

 

  这好像和python的__call__()方法有着密切的关系,详见https://blog.csdn.net/u011501388/article/details/84062483。

 

posted @ 2021-11-30 18:24  TheDa  阅读(423)  评论(0编辑  收藏  举报