nn.ModuleList()與nn.Sequential()


nn.Sequential用法
將多個模塊進行封裝

layer = nn.Sequential(nn.Conv2d(in_channels=128, out_channels=64,kernel_size)       

nn.Sequential內部實現了forward功能,可以直接調用
例如:

x = torch.randn(16, 128, 20, 20)
output = layer(x)

nn.ModuleList,它是一個儲存不同 module,並自動將每個 module 的 parameters 添加到網絡之中的容器。你可以把任意 nn.Module 的子類 (比如 nn.Conv2d, nn.Linear 之類的) 加到這個 list 里面,方法和 Python 自帶的 list 一樣,無非是 extend,append 等操作。但不同於一般的 list,加入到 nn.ModuleList 里面的 module 是會自動注冊到整個網絡上的,同時 module 的 parameters 也會自動添加到整個網絡中。

layer = nn.ModuleList([nn.Conv2d(in_channels=128, out_channels=64,kernel_size])

nn.ModuleList內部沒有forword功能
例如:

報錯
x = torch.randn(16, 128, 20, 20)
output = layer(x)
正確
x= torch.randn(16, 128, 20, 20)
for module in layer:
    x= module(x)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM