Pytorch-fogyókúra a mesternél · foolwoodpytorch-fogyókúra · GitHub
A GitHub több mint 50 millió fejlesztőnek ad otthont, amelyek együttesen működnek együtt kódok befogadásában és felülvizsgálatában, projektek kezelésében és szoftverek építésében.
A GitHub az, ahol a világ szoftvereket épít
Fejlesztők és vállalatok milliói építik, szállítják és tartják karban szoftverüket a GitHubon - a világ legnagyobb és legfejlettebb fejlesztői platformján.
pytorch-fogyókúra/prune.py /
Nem található definíció ebben a fájlban.
- Ugrás a T fájlra
- Menj az L sorra
- Menj az R definícióhoz
- Útvonal másolása
import os |
import argparse |
import fáklya |
import fáklya. nn mint nn |
fáklyától. autograd import változó |
torchvision import adatkészletekből, transzformációkból |
vgg importból vgg |
importálja a számot np-ként |
# A metszés beállításai |
parser = argparse. ArgumentParser (leírás = 'PyTorch Slimming CIFAR prune') |
elemző . add_argument ('--dataset', type = str, default = 'cifar10', |
help = 'edzés adatkészlet (alapértelmezett: cifar10)') |
elemző . add_argument ('--test-batch-size', type = int, default = 1000, metavar = 'N', |
help = 'bemeneti kötegméret a teszteléshez (alapértelmezett: 1000)') |
elemző . add_argument ('--no-cuda', action = 'store_true', alapértelmezett = Hamis, |
help = 'letiltja a CUDA képzést') |
elemző . add_argument ('--percent', type = float, alapértelmezett = 0.5, |
help = 'skála ritka arány (alapértelmezett: 0.5)') |
elemző . add_argument ('--model', alapértelmezett = '', type = str, metavar = 'PATH', |
help = 'elérési út a nyers képzett modellhez (alapértelmezett: nincs)') |
elemző . add_argument ('--save', alapértelmezett = '', type = str, metavar = 'PATH', |
help = 'út az aszalt szilva modell mentéséhez (alapértelmezett: nincs)') |
args = elemző. parse_args () |
érvel. cuda = nem érvel. no_cuda és fáklya. cuda. elérhető () |
model = vgg () |
ha érvel. cuda: |
modell. cuda () |
ha érvel. modell: |
ha os. pálya . isfile (arg. modell): |
nyomtatás ("=> ellenőrzőpont betöltése '<>'". formátum (érvelési modell)) |
ellenőrzőpont = fáklya. terhelés (arg. modell) |
érvel. start_epoch = ellenőrzőpont ['korszak'] |
best_prec1 = ellenőrzőpont ['best_prec1'] |
modell. load_state_dict (ellenőrzőpont ['state_dict']) |
print ("=> betöltött ellenőrzőpont '<>' (epoch <>) 1. prek .:" |
. formátum (arg. modell, ellenőrző pont ['korszak'], legjobb_prec1)) |
más: |
nyomtatás ("=> a '<>'" formátumban nem található ellenőrző pont (arg. folytatás)) |
nyomtatás (modell) |
összesen = 0 |
m-re modellben. modulok (): |
ha isinstance (m, nn. BatchNorm2d): |
összesen + = m. súly . adatok. alak [0] |
bn = fáklya. nullák (összesen) |
index = 0 |
m-re modellben. modulok (): |
ha isinstance (m, nn. BatchNorm2d): |
méret = m. súly . adatok. alak [0] |
bn [index:( index + méret)] = m. súly . adatok. abs (). klón () |
index + = méret |
y, i = fáklya. rendezés (milliárd) |
thre_index = int (összesen * arg. százalék) |
thre = y [thre_index] |
metszett = 0 |
cfg = [] |
cfg_mask = [] |
k, m esetén felsoroljuk (modell. modulok ()): |
ha isinstance (m, nn. BatchNorm2d): |
súly_másolat = m. súly . adatok. klón () |
maszk = súly_másolat. abs (). gt (három). úszó (). cuda () |
metszett = metszett + maszk. alak [0] - fáklya. összeg (maszk) |
m. súly . adatok. mul_ (maszk) |
m. Elfogultság . adatok. mul_ (maszk) |
vö. függelék (int (fáklya. összeg (maszk))) |
cfg_mask. függelék (maszk. klón ()) |
print ('réteg index: \ t teljes csatorna: \ t fennmaradó csatorna:' . |
formátum (k, maszk. alak [0], int (fáklya. összeg (maszk)))) |
elif izinstance (m, nn. MaxPool2d): |
vö. függelék ('M') |
metszett_arány = metszett/összesen |
nyomtatás ('Sikeres előfeldolgozás!') |
# egyszerű tesztmodell a metszés előfeldolgozása után (egyszerű BN skálák nullára állítása) |
def teszt (): |
kwargs = < 'num_workers': 1, 'pin_memory': True >ha érvel. cuda más <> |
teszt_töltő = fáklya. utils. adatok. DataLoader ( |
adatkészletek. CIFAR10 ('./data', vonat = Hamis, transzformáció = transzformáció. Írja ([ |
átalakul. ToTensor (), |
átalakul. Normalizálás ((0,5, 0,5, 0,5), (0,5, 0,5, 0,5))])), |
kötegelt_méret = érvel. test_batch_size, shuffle = True, ** kwargs) |
modell. eval () |
helyes = 0 |
Adatok esetén célozzon a test_loader programban: |
ha érvel. cuda: |
adatok, cél = adatok. cuda (), cél. cuda () |
adatok, cél = változó (adatok, volatilis = igaz), változó (cél) |
output = modell (adatok) |
pred = kimenet. adatok. max (1, keepdim = True) [1] # megkapja a maximális log-valószínűség indexét |
helyes + = pred. eq (cél. adatok. view_as (pred)). CPU (). összeg () |
print ('\ n Tesztkészlet: Pontosság: <>/<> (%) \ n'. formátum ( |
helyes, len (test_loader. adatkészlet), 100. * helyes/len (test_loader. adatkészlet))) |
return return/float (len (test_loader. adatkészlet)) |
teszt () |
# Készítsen valódi metszést |
nyomtatás (cfg) |
newmodel = vgg (cfg = cfg) |
új modell . cuda () |
layer_id_in_cfg = 0 |
start_mask = fáklya. egyek (3) |
end_mask = cfg_mask [layer_id_in_cfg] |
[m0, m1] esetén zip-ben (modell. modulok (), újmodell. modulok ()): |
ha isinstance (m0, nn. BatchNorm2d): |
idx1 = np. nyomja (np. argwhere (np. asarray (end_mask. cpu (). numpy ()))) |
m1. súly . adatok = m0. súly . adatok [idx1]. klón () |
m1. Elfogultság . adatok = m0. Elfogultság . adatok [idx1]. klón () |
m1. futás_érték = m0. running_mean [idx1]. klón () |
m1. futás_var = m0. running_var [idx1]. klón () |
layer_id_in_cfg + = 1 |
start_mask = end_mask. klón () |
ha a layer_id_in_cfg len (cfg_mask): # nem változik a Final FC-ben |
end_mask = cfg_mask [layer_id_in_cfg] |
elif izinstance (m0, nn. Conv2d): |
idx0 = np. összenyomni (np. argwhere (np. asarray (start_mask. cpu (). numpy ()))) |
idx1 = np. nyomja (np. argwhere (np. asarray (end_mask. cpu (). numpy ()))) |
print ('Formában: Out shape:'. formátum (idx0. alak [0], idx1. alak [0])) |
w = m0. súly . adatok [:, idx0,:,:]. klón () |
w = w [idx1,:,:,:]. klón () |
m1. súly . adatok = w. klón () |
# m1.bias.data = m0.bias.data [idx1] .clone () |
elif izinstance (m0, nn. Lineáris): |
idx0 = np. összenyomni (np. argwhere (np. asarray (start_mask. cpu (). numpy ()))) |
m1. súly . adatok = m0. súly . adatok [:, idx0]. klón () |
fáklya. megment (< 'cfg': cfg, 'state_dict': newmodel . state_dict ()>, érvel. megment ) |
nyomtatás (newmodel) |
model = newmodel |
teszt () |
- Sorok másolása
- Másolja a permalinket
- Tekintse meg a hibát
- Hivatkozás az új számban
Jelenleg nem hajthatja végre ezt a műveletet.
Egy másik füllel vagy ablakkal jelentkezett be. Töltse be újra a munkamenet frissítéséhez. Kijelentkezett egy másik fülön vagy ablakban. Töltse be újra a munkamenet frissítéséhez.
- Mindenre készen állnak a csillagok, amelyek csökkentették a gyomrot a fogyásért - Tehetséges Mester Blog
- Tehetséges mesterblog - Minőségi gondoskodás önmagáról
- STB oka lehet; t fopen · 174. szám · pjreddiedarknet · GitHub
- A 7 legjobb online táplálkozási tanúsító tanfolyam A MIND A FŐ
- Radontesztelés Bristol, CT Clog Master, LLC