哈嘍小伙伴們大家好呀,很長時間沒有更新啦,最近在研究一個問題,就是AttributeError: 'xxx' object has no attribute 'module'
今天終于是解決了,所以來記錄分享一下:
我這里出現的問題是:
因為我的數據比較大,所以我在服務器上運行程序,但是我在本機上調通了,到服務器上面就出現這個錯誤,也是因為我對項目進行了更改,我更改了一個完整的網絡
下面我就來說一下出現這個問題的原因:
? ? ? ? 程序中使用了nn.DataParallel,但是
PyTorch 中使用 nn.DataParallel
或 nn.parallel.DistributedDataParallel
這樣的模型并行技術會導致這個問題,因為它們會將模型包裝在另一個模塊中,而代碼可能在不同的環境下運行
我的修改包括兩部分內:
針對代碼中,?AL_module
是一個模型,直接使用 AL_module
來進行前向傳播,無需使用 .module
# 在 train 函數中,將下面這行代碼修改:
logits, state = AL_module(net.module.al_input, lab_mask)
# 改為:
logits, state = AL_module(net.al_input, lab_mask)
還有一個原因是:
這種情況通常出現在使用模型并行技術(如 nn.DataParallel
或 nn.parallel.DistributedDataParallel
)時,這些技術會在模型外部包裝一個額外的模塊,從而導致屬性訪問時出現差異
?