pytorch程式碼學習--類名作為函式引數傳遞&&其他語法知識
阿新 • • 發佈:2021-11-30
我的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,但是例項化之後的類仍然能接收引數!