0608-nn和autograd的區別
目錄- 一、nn 和 autograd 的區別
- 二、Function 和 Module 在實際中使用的情況
pytorch完整教程目錄:https://www.cnblogs.com/nickchen121/p/14662511.html
一、nn 和 autograd 的區別
Module 利用的是 autograd 的技術,主要是為了實作前向傳播,在 forward 函式中,Module 對輸入的 Variable 進行的各種操作基本都使用到了 autograd 的技術,
因此在這里主要對比 autograd.Function 和 nn.Module 兩者之間的區別,
autograd.Function利用 Tensor 對 autograd 技術的擴展,為 autograd 實作了新的運算運算子,不僅要實作前向傳播還要手動實作反向傳播nn.Module利用了 autograd 技術,對 nn 的功能進行擴展,實作了深度學習中的大部分層,并且只需要實作前向傳播,autograd 就會自動實作反向傳播nn.functional是一些 autograd 操作的集合,是經過封裝的函式,如果使用它來構建深度神經網路,需要自己撰寫前向傳播和反向傳播函式
二、Function 和 Module 在實際中使用的情況
Funciton 和 Module 作為擴充 torch 的兩種介面,在實際中
- 如果某一個操作在 autograd 中尚未支持,則可以利用 Function 手動實作對應的前向傳播和反向傳播
- 如果某些時候利用 autograd 介面比較復雜,也可以利用 Function 將多個操作聚合,實作優化,如第 3 章
擴展 autograd那一節實作的 Sigimoid 一樣,此時將會比直接利用 autograd 低級別的操作要快 - 如果只是想在深度學習中增加某一層,使用 Module 進行封裝則會更加簡單
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/280508.html
標籤:其他
上一篇:小白的演算法課-方法論
下一篇:0609-搭建ResNet網路
