Піторх-схуднення у майстра · глупствопиторк-схуднення · GitHub
У GitHub проживає понад 50 мільйонів розробників, які спільно працюють над розміщенням та переглядом коду, управління проектами та спільним створенням програмного забезпечення.
GitHub - це місце, де світ розробляє програмне забезпечення
Мільйони розробників та компаній створюють, постачають та підтримують своє програмне забезпечення на GitHub - найбільшій та найдосконалішій платформі розробки у світі.
pytorch-slimming/prune.py /
Визначень у цьому файлі не знайдено.
- Перейдіть до файлу T
- Перейдіть до рядка L
- Перейдіть до визначення R
- Копіювати шлях
імпорт ос |
імпорт argparse |
імпортний факел |
імпортний факел. nn як nn |
від факела. змінна імпорту автограду |
з наборів даних імпорту torchvision, перетворює |
з vgg імпорт vgg |
імпортувати numpy як np |
# Налаштування чорносливу |
синтаксичний аналізатор = argparse. ArgumentParser (опис = 'Чорнослив CIFAR для схуднення PyTorch') |
парсер. add_argument ('--dataset', type = str, за замовчуванням = 'cifar10', |
help = 'навчальний набір даних (за замовчуванням: cifar10)') |
парсер. add_argument ('--test-batch-size', type = int, за замовчуванням = 1000, metavar = 'N', |
help = 'ввести розмір партії для тестування (за замовчуванням: 1000)') |
парсер. add_argument ('--no-cuda', action = 'store_true', за замовчуванням = False, |
help = 'відключає навчання CUDA') |
парсер. add_argument ('--percent', type = float, за замовчуванням = 0,5, |
help = 'масштаб розрідженого коефіцієнта (за замовчуванням: 0,5)') |
парсер. add_argument ('--model', default = '', type = str, metavar = 'PATH', |
help = 'шлях до необробленої навчальної моделі (за замовчуванням: немає)') |
парсер. add_argument ('--save', за замовчуванням = '', type = str, metavar = 'PATH', |
help = 'шлях до збереження моделі чорносливу (за замовчуванням: немає)') |
args = парсер. parse_args () |
аргументи. cuda = не аргументи. no_cuda та факел. cuda. доступний () |
model = vgg () |
якщо аргументи. cuda: |
модель. cuda () |
якщо аргументи. модель: |
якщо ос. шлях. isfile (аргументи. модель): |
print ("=> контрольна точка завантаження '<>'". формат (аргументи. модель)) |
КПП = факел. навантаження (аргументи. модель) |
аргументи. start_epoch = контрольна точка ['епоха'] |
best_prec1 = контрольна точка ['best_prec1'] |
модель. load_state_dict (контрольний пункт ['state_dict']) |
print ("=> завантажена контрольна точка '<>' (epoch <>) Prec1:" |
. формат (аргументи. модель, контрольна точка ['епоха'], best_prec1)) |
ще: |
print ("=> контрольної точки не знайдено у форматі '<>'". формат (аргументи. резюме)) |
друк (модель) |
всього = 0 |
для м у моделі. модулі (): |
if isinstance (m, nn. BatchNorm2d): |
загальна + = m. вага. даних. форма [0] |
bn = факел. нулі (всього) |
індекс = 0 |
для м у моделі. модулі (): |
if isinstance (m, nn. BatchNorm2d): |
розмір = м. вага. даних. форма [0] |
bn [індекс:( індекс + розмір)] = m. вага. даних. абс (). клон () |
індекс + = розмір |
y, i = факел. сортувати (млрд) |
thre_index = int (загальний * аргумент. відсотків) |
thre = y [thre_index] |
обрізаний = 0 |
cfg = [] |
cfg_mask = [] |
для k, m в переліченні (модель. модулі ()): |
if isinstance (m, nn. BatchNorm2d): |
вага_копії = м. вага. даних. клон () |
маска = вага_копії. абс (). gt (три). float (). cuda () |
обрізаний = обрізаний + маска. форма [0] - факел. сума (маска) |
м. вага. даних. mul_ (маска) |
м. упередженість. даних. mul_ (маска) |
cfg. append (int (факел. сума (маска))) |
cfg_mask. додати (маска. clone ()) |
print ('Індекс шару: \ t загальний канал: \ t залишився канал:' . |
формат (k, маска. форма [0], int (факел. сума (маска)))) |
elif isinstance (m, nn. MaxPool2d): |
cfg. append ('M') |
pruned_ratio = обрізаний/загальний |
print ('Попередня обробка успішна!') |
# проста тестова модель після попередньої обробки чорносливу (простий встановити шкали BN на нулі) |
def test (): |
кварги = < 'num_workers': 1, 'pin_memory': True >якщо аргументи. cuda else <> |
test_loader = факел. утилів. даних. DataLoader ( |
набори даних. CIFAR10 ('./data', train = False, transform = transforms. Compose ([ |
перетворює. ToTensor (), |
перетворює. Нормалізувати ((0,5, 0,5, 0,5), (0,5, 0,5, 0,5))])), |
batch_size = аргументи. test_batch_size, shuffle = True, ** кварги) |
модель. eval () |
правильно = 0 |
для даних, ціль у test_loader: |
якщо аргументи. cuda: |
дані, ціль = дані. cuda (), ціль. cuda () |
data, target = змінний (data, volatile = True), змінний (target) |
вихід = модель (дані) |
pred = вихід. даних. max (1, keepdim = True) [1] # отримати індекс максимальної імовірності журналу |
правильний + = перед. eq (ціль. дані. view_as (pred)). ЦП (). сума () |
print ('\ n Тестовий набір: Точність: <>/<> (%) \ n'. формат ( |
правильно, len (test_loader. набір даних), 100. * правильно/len (test_loader. набір даних))) |
повернути правильний/плаваючий (len (test_loader. набір даних)) |
тест () |
# Зробіть справжній чорнослив |
друк (cfg) |
newmodel = vgg (cfg = cfg) |
newmodel. cuda () |
layer_id_in_cfg = 0 |
start_mask = факел. ті (3) |
end_mask = cfg_mask [ідентифікатор_ шару_в_cfg] |
для [m0, m1] в zip (model. modules (), newmodel. modules ()): |
if isinstance (m0, nn. BatchNorm2d): |
idx1 = np. squeeze (np. argwhere (np. asarray (end_mask. cpu (). numpy ()))) |
m1. вага. дані = m0. вага. дані [idx1]. клон () |
m1. упередженість. дані = m0. упередженість. дані [idx1]. клон () |
m1. працює_означає = m0. запуск_значення [idx1]. клон () |
m1. працює_вар = m0. запущений_вар [idx1]. клон () |
ідентифікатор_шару в_cfg + = 1 |
start_mask = кінцева_маска. клон () |
якщо layer_id_in_cfg len (cfg_mask): # не змінюється у Final FC |
end_mask = cfg_mask [ідентифікатор_ шару_в_cfg] |
elif isinstance (m0, nn. Conv2d): |
idx0 = np. squeeze (np. argwhere (np. asarray (start_mask. cpu (). numpy ()))) |
idx1 = np. squeeze (np. argwhere (np. asarray (end_mask. cpu (). numpy ()))) |
print ('In shape: Out shape:'. format (idx0. shape [0], idx1. shape [0])) |
w = m0. вага. дані [:, idx0,:,:]. клон () |
w = w [idx1,:,:,:]. клон () |
m1. вага. дані = w. клон () |
# m1.bias.data = m0.bias.data [idx1] .clone () |
elif isinstance (m0, nn. лінійний): |
idx0 = np. squeeze (np. argwhere (np. asarray (start_mask. cpu (). numpy ()))) |
m1. вага. дані = m0. вага. дані [:, idx0]. клон () |
факел. зберегти (< 'cfg': cfg, 'state_dict': newmodel . state_dict ()>, аргументи. зберегти) |
друк (нова модель) |
модель = новамодель |
тест () |
- Копіювати рядки
- Копіювати постійне посилання
- Переглянути git вину
- Довідка в новому випуску
Зараз ви не можете виконати цю дію.
Ви ввійшли з іншої вкладки чи вікна. Оновіть, щоб оновити сеанс. Ви вийшли з іншої вкладки чи вікна. Оновіть, щоб оновити сеанс.
- Готові до всього, що зірки, які зменшили шлунок для схуднення - Блог талановитих майстрів
- Блог талановитих майстрів - Якісний догляд за собою
- STB Причина може; t fopen · Випуск # 174 · pjreddiedarknet · GitHub
- 7 найкращих курсів з сертифікації харчування в Інтернеті РОЗУМ МІСТ
- Тестування радону в Брістолі, CT Clog Master, LLC