PyTorch如何恢復指定權重
1. 如何從已訓練好的網路模型中提取指定層權重
import torch
# vgg為官方提供的model
# https://github.com/pytorch/vision/blob/master/torchvision/models/vgg.py
import vgg
model = torch.load('logs/vgg16.pkl')
restore_param = ['classifier.2.bias']
# 當然 如果你的目的是不想匯入某些層的權重,將下述程式碼改為`if not k in restore_param`
restore_param = {v for k, v in model.state_dict().items() if k in restore_param}
print(restore_param)
------>:
{tensor([-0.0048, 0.0048], device='cuda:0')}
2. 如何載入模型部分引數並更新
import torch
import vgg
model = torch.load('logs/vgg16.pkl')
vgg16 = vgg.vgg16().cuda()
vgg16_dict = vgg16.state_dict()
for k, v in vgg16_dict.items():
print(v)
print()
print('##################################################################################')
print()
restore = ['classifier.2.bias']
restore_param = {k: v for k, v in model.state_dict().items() if k in restore}
vgg16_dict.update(restore_param)
for k, v in vgg16_dict.items():
print(v)
------>:
tensor([[[[-0.0198, 0.0425, -0.0221],
[ 0.0636, 0.0193, -0.0661],
[-0.0035, 0.0031, -0.0395]],
[[-0.0525, 0.0796, 0.0263],
[-0.0669, 0.1537, 0.1025],
[ 0.0002, -0.0456, -0.0086]],
[[-0.0344, 0.0566, -0.0090],
[ 0.0915, 0.0133, -0.0007],
[-0.0228, -0.0143, 0.0841]]],
...
tensor([0., 0., 0., ..., 0., 0., 0.], device='cuda:0')
tensor([[ 2.7670e-03, -1.6860e-02, -6.6972e-03, ..., 6.7144e-03,
-7.2912e-03, 2.0684e-03],
[ 4.2978e-03, -9.8524e-03, 1.2163e-02, ..., 6.3420e-03,
-5.1077e-03, 6.4550e-03]], device='cuda:0')
tensor([0., 0.], device='cuda:0')
##################################################################################
tensor([[[[-0.0198, 0.0425, -0.0221],
[ 0.0636, 0.0193, -0.0661],
[-0.0035, 0.0031, -0.0395]],
[[-0.0525, 0.0796, 0.0263],
[-0.0669, 0.1537, 0.1025],
[ 0.0002, -0.0456, -0.0086]],
[[-0.0344, 0.0566, -0.0090],
[ 0.0915, 0.0133, -0.0007],
[-0.0228, -0.0143, 0.0841]]],
...
tensor([0., 0., 0., ..., 0., 0., 0.], device='cuda:0')
tensor([[ 2.7670e-03, -1.6860e-02, -6.6972e-03, ..., 6.7144e-03,
-7.2912e-03, 2.0684e-03],
[ 4.2978e-03, -9.8524e-03, 1.2163e-02, ..., 6.3420e-03,
-5.1077e-03, 6.4550e-03]], device='cuda:0')
tensor([-0.0048, 0.0048], device='cuda:0')
可以發現
classifier.2.bias的值由[0., 0.]變為了[-0.0048, 0.0048]
相關文章
- 利用innobackupex備份集恢復指定庫
- 如何備份及恢復Linux檔案許可權Linux
- pytorch---之固定某些層權重再訓練PyTorch
- pytorch指定GPU訓練PyTorchGPU
- 異機使用完全備份恢復指定的PDB
- oracle asm 資料塊重構恢復OracleASM
- Pytorch中自定義神經網路卷積核權重PyTorch神經網路卷積
- 如何恢復SSD NVME固態硬碟的資料恢復硬碟資料恢復
- bitlocker如何恢復金鑰 bitlocker恢復金鑰的方法
- 【vsan資料恢復】vsan資料重構失敗的資料恢復案例資料恢復
- Android Service重啟恢復(Service程式重啟)原理解析Android
- win10桌面排序亂了如何恢復_win10重啟桌面圖示排序混亂恢復教程Win10排序
- 照片恢復軟體是如何恢復數位相機照片的?
- RAC安裝目錄許可權快速恢復
- Oracle 目錄許可權丟失故障恢復Oracle
- win10重置電腦後如何恢復以前的軟體 win10重置系統後以前應用的恢復步驟Win10
- 【北亞資料恢復】硬碟壞道故障如何恢復資料?資料恢復硬碟
- 教你一招,告警恢復時如何拿到恢復時的值?
- 資料夾刪除了如何恢復?輕鬆恢復教學
- [譯] 分散式系統如何從故障中恢復?— 重試、超時和退避分散式
- Win10系統重啟後如何恢復之前執行的視窗Win10
- 教你一招,告警恢復時如何拿到恢復時的值? 合
- 硬碟資料丟失如何恢復?硬碟
- uninstall 後的檔案如何恢復
- 【小白學PyTorch】4 構建模型三要素與權重初始化PyTorch模型
- DM7使用DMRMAN恢復資料庫到指定時間點/LSN資料庫
- 如何有效的提高網站權重網站
- Mac突然沒有聲音但是重啟後可以恢復Mac
- RabbitMQ如何備份與恢復資料MQ
- 告警恢復時,如何拿到當前值
- 【Mysql】如何透過binlog恢復資料MySql
- 教你如何恢復各種文件密碼密碼
- 如何恢復出廠設定的Mac?Mac
- 從備份片中恢復某個指定得歸檔或者資料檔案
- 【DATAGUARD】Oracle 通過Dataguard指定恢復時間用於找回丟失資料Oracle
- win10重置系統沒有恢復介質怎麼辦 win10重置沒有恢復介質的方法Win10
- 資料恢復:AMDU資料抽取恢復資料恢復
- postgreSQL 恢復至故障點 精準恢復SQL