<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
最近使用pytorch訓練模型,儲存模型後再次載入使用出現了一些問題。記錄一下解決方案!
torch.save(model,path) torch.load(path)
torch.save(model.state_dict(),path) model_state_dic = torch.load(path) model.load_state_dic(model_state_dic)
模型儲存的時候會把模型結構定義檔案路徑記錄下來,載入的時候就會根據路徑解析它然後裝載引數;當把模型定義檔案路徑修改以後,使用torch.load(path)就會報錯。
把model資料夾修改為models後,再載入就會報錯。
import torch from model.TextRNN import TextRNN load_model = torch.load('experiment_model_save/textRNN.bin') print('load_model',load_model)
這種儲存完整模型結構和引數的方式,一定不要改動模型定義檔案路徑。
在多卡機器上有多張顯示卡0號開始,現在模型在n>=1上的顯示卡訓練儲存後,拷貝在單卡機器上載入
import torch from model.TextRNN import TextRNN load_model = torch.load('experiment_model_save/textRNN_cuda_1.bin') print('load_model',load_model)
會出現cuda device不匹配的問題——你儲存的模程式碼段 小部件型是使用的cuda1,那麼採用torch.load()開啟的時候,會預設的去尋找cuda1,然後把模型載入到該裝置上。這個時候可以直接使用map_location來解決,把模型載入到CPU上即可。
load_model = torch.load('experiment_model_save/textRNN_cuda_1.bin',map_location=torch.device('cpu'))
當用多GPU同時訓練模型之後,不管是採用模型結構和引數一起儲存還是單獨儲存模型引數,然後在單卡下載入都會出現問題
a、模型結構和引數一起保然後在載入
torch.distributed.init_process_group(backend='nccl')
模型訓練的時候採用上述多程序的方式,所以你在載入的時候也要宣告,不然就會報錯。
b、單獨儲存模型引數
model = Transformer(num_encoder_layers=6,num_decoder_layers=6) state_dict = torch.load('train_model/clip/experiment.pt') model.load_state_dict(state_dict)
同樣會出現問題,不過這裡出現的問題是引數字典的key和模型定義的key不一樣
原因是多GPU訓練下,使用分散式訓練的時候會給模型進行一個包裝,程式碼如下:
model = torch.load('train_model/clip/Vtransformers_bert_6_layers_encoder_clip.bin') print(model) model.cuda(args.local_rank) 。。。。。。 model = nn.parallel.DistributedDataParallel(model,device_ids=[args.local_rank],find_unused_parameters=True) print('model',model)
包裝前的模型結構:
包裝後的模型
在外層多了DistributedDataParallel以及module,所以才會導致在單卡環境下載入模型權重的時候出現權重的keys不一致。
if gpu_count > 1: torch.save(model.module.state_dict(),save_path) else: torch.save(model.state_dict(),save_path) model = Transformer(num_encoder_layers=6,num_decoder_layers=6) state_dict = torch.load(save_path) model.load_state_dict(state_dict)
這樣就是比較好的正規化,載入不會出錯。
到此這篇關於pytorch模型儲存與載入中的一些問題的文章就介紹到這了,更多相關pytorch模型儲存與載入內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45