1.decompressionbombwarning: image size (92680344 pixels) exceeds limit of 89478485 pixels, could be decompression bomb dos attack.decompressionbombwarning,
日期 : 2021-01-27
原因是影象尺寸超過pli 預設讀取影象尺寸。
一種方法是更改閾值上限 參考
frompil import image
image.max_image_pixels = 2300000000 # 更改閾值畫素上限
第二種方法,使用其它的庫,讀入之後,縮放再給pil使用。
2.列表儲存生成的特徵資料時,視訊記憶體溢位
問題**
for data inenumerate(testloader): # 這邊返回的是(執行次數,__getitem__返回資料) 。 loader的batch_size= 1
print(data[0])
classno = data[1][1
] testimage= data[1][0
] filepath =data[1][2
] testencode =model.encode(testimage.cuda())
大概執行25次,視訊記憶體溢位。 用的是resnet152做遷移學習。視訊記憶體是8g ,之前訓練網路的時候,批次=25,視訊記憶體就會溢位。對照,顯然每次載入一幅影象生成特徵值後,該次的網路占用沒有釋放。猜測雖然是eval ,但是每次執行後將testencode 儲存。系統檢測到資料沒釋放,對應生成特徵的網路過程也沒釋放。
解決辦法如下
testencode = model.encode(testimage.cuda()).detach().cpu() # 呼叫detach之後,儲存新建副本,與網路無關。
3. 載入預訓練模型並刪除指定資料
載入預訓練模型的時候,會碰到預訓練模型類別數目和實際類別不一致。 網上搜尋,有如下方法
1)建立模型時,設定類別數目和預訓練模型一致,賦值完畢後,再更改輸出頭
checkpoint = torch.load(config.premodelpath, map_location='cpu'
) #輸出的層名稱
classifiers = "
head
"msg = model.load_state_dict(checkpoint['
model
'], strict=false)
model.head = 新建輸出頭
此處,給出參考「timm」的**。先刪除預訓練模型的頭,然後直接賦值。
checkpoint = torch.load(config.premodelpath, map_location='cpu'
) #輸出的層名稱
classifiers = "
head
"if classifiers is
not none:
ifisinstance(classifiers, str):
classifiers =(classifiers,)
#類數目不一致,則刪除輸出層
if config.model.num_classes != 1000
:
for classifier_name in
classifiers:
# completely discard fully connected
if model num_classes doesn'
t match pretrained weights
del checkpoint["
model
"][classifier_name + '
.weight']
del checkpoint[
"model
"][classifier_name + '
.bias
']
原來預訓
Pytorch使用過程總結
類似numpy的廣播 使用pytorch廣播語義實現不同形狀陣列的運算 如果以下規則成立,則兩個張量是 可廣播的 每個張量具有至少乙個維度。當從尺寸尺寸開始迭代時,從尾部維度開始,尺寸大小必須相等,其中乙個為1,或其中乙個不存在。舉例說明 在v0.2之前,如下2個張量是無法執行的,因為屬於不同型別 ...
python 使用過程問題總結
可能是安裝的時候沒有勾選pip,導致pip無法使用。pip traceback most recent call last file stdin line 1,in nameerror name pip is not defined 在cmd命令符下輸入pip,而不是在python直譯器中輸入pip...
git windows使用過程問題積累
課程老師指定使用git進行 作業 整理了自己在使用git過程 現的問題,希望能幫到大家 注 本人使用git for windows win 10 複製貼上仍然能使用,只是快捷鍵修改了,可通過滑鼠右鍵使用 廖雪峰git教程 可能會出現 authentication failed for這樣的報錯 原因...