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。