Spark in me - Internet, data science, math, deep learning, philo

snakers4 @ telegram, 1356 members, 1614 posts since 2016

All this - lost like tears in rain.

Data science, deep learning, sometimes a bit of philosophy and math. No bs.

Our website
Our chat
DS courses review

Posts by tag «pytorch»:

snakers4 (Alexander), October 06, 07:24

Monkey patching a PyTorch model

Well, ideally you should not do this.

But sometimes you just need to quickly test something and amend your model on the fly.

This helps:

import torch

import functools

def rsetattr(obj, attr, val):

pre, _, post = attr.rpartition('.')

return setattr(rgetattr(obj, pre) if pre else obj, post, val)

def rgetattr(obj, attr, *args):

def _getattr(obj, attr):

return getattr(obj, attr, *args)

return functools.reduce(_getattr, [obj] + attr.split('.'))

for module in model.named_modules():

old_module_path = module[0]

old_module_object = module[1]

# replace an old object with the new one

# copy some settings and its state

if isinstance(old_module_object,torch.nn.SomeClass):

new_module = SomeOtherClass(old_module_object.some_settings,




The above code essentially does the same as:

model = some_other_block






snakers4 (Alexander), September 11, 06:00

Useful Python / PyTorch bits

dot.notation access to dictionary attributes

class dotdict(dict):

__getattr__ = dict.get

__setattr__ = dict.__setitem__

__delattr__ = dict.__delitem__

PyTorch embedding layer - ignore padding

nn.Embedding has a padding_idx attribute not to update the padding token embedding.



snakers4 (Alexander), July 18, 05:39

Lazy failsafe in PyTorch Data Loader

Sometimes you train a model and testing all the combinations of augmentations / keys / params in your dataloader is too difficult. Or the dataset is too large, so it would take some time to check it properly.

In such cases I usually used some kind of failsafe try/catch.

But looks like even simpler approach works:

if img is None:

# do not return anything



return img



snakers4 (Alexander), July 14, 10:57

Once again stumbled upon this amazing PyTorch related post

For those learning PyTorch



Feedback on PyTorch for Kaggle competitions

Hello team, Great work on PyTorch, keep the momentum. I wanted to try my hands on it with the launch of the new MultiLabeling Amazon forest satellite images on Kaggle. Note: new users can only post 2 links in a post so I can’t direct link everything I created the following code as an example this weekend to load and train a model on Kaggle data and wanted to give you my feedback on PyTorch. I hope it helps you. Loading data that is not from a regular dataset like MNIST or CIFAR is confusin...

snakers4 (Alexander), April 25, 06:13

PyTorch 0.4 released


(1) Tensor / Variable merged

(2) Zero-dimensional Tensors

(3) dtypes

(4) migration guide



pytorch - Tensors and Dynamic neural networks in Python with strong GPU acceleration

snakers4 (Alexander), March 31, 11:32

Wow PyTorch is so cool that it even has a concat dataset class

Does not work for datasets with different resolution though


snakers4 (Alexander), March 06, 14:34

I have seen questions on forums - how to add Keras-like progress bar to PyTorch for simple models?

The answer is to use tqdm and this property


This example is also great

from tqdm import trange

from random import random, randint

from time import sleep

t = trange(100)

for i in t:

# Description will be displayed on the left

t.set_description('GEN %i' % i)

# Postfix will be displayed on the right, and will format automatically

# based on argument's datatype

t.set_postfix(loss=random(), gen=randint(1,999), str='h', lst=[1, 2])




Can I add message to the tqdm progressbar?

When using the tqdm progress bar: can I add a message to the same line as the progress bar in a loop? I tried using the "tqdm.write" option, but it adds a new line on every write. I would like each

snakers4 (Alexander), February 18, 08:05

Even though I am preparing a large release on GAN application on real example, I just could not help sharing these 2 links.

They are just an absolute of perfection for GANs on PyTroch



Also this is the most idiomatic PyTorch code (Imagenet finetuning) code I have ever seen


So if you are new to PyTorch, then these links will be very useful)





Contribute to WassersteinGAN development by creating an account on GitHub.

Which of the latest projects did you like the most?

anonymous poll

Still waiting for GANs – 17

👍👍👍👍👍👍👍 47%

Satellites! – 10

👍👍👍👍 28%

Nothing / not interested / missed them – 5

👍👍 14%

Jungle! – 3

👍 8%

PM me for other options – 1

▫️ 3%

👥 36 people voted so far.

snakers4 (Alexander), February 01, 09:31

Cyclical Learning rates are not merged in Pytorch yet, but they are in the PR stage




Adds Cyclical Learning Rates by thomasjpfan · Pull Request #2016 · pytorch/pytorch

Adds feature requested in #1909. Mimics the parameters from Since Cyclical Learning Rate (CLR) requires updating the learning rate after every batch, I added batc...

snakers4 (Alexander), January 29, 06:00

Nice example of group convolutions via pytorch





pretrained-models.pytorch - Pretrained ConvNets for pytorch: NASNet, ResNeXt, ResNet, InceptionV4, InceptionResnetV2, Xception, DPN, etc.

snakers4 (Alexander), November 17, 11:44

Библиотека, которая позволяет использовать почти все визуализации tensorboard с pytorch


Особенно интересен пример для отладки графа вычислений





tensorboard-pytorch - tensorboard for pytorch

snakers4 (Alexander), November 15, 06:43

Лайфхак дня. Как прикрутить TensorBoard к pytorch за 10 минут


По сути единственное, что продолжает вымораживать в pytorch по сравнению с tf - отсутствие инструментов для дебага графа вычислений (может потому, что он динамический?)




pytorch-tutorial - PyTorch Tutorial for Deep Learning Researchers

snakers4 (Alexander), October 26, 06:04

Заметка про тренировку сетей с разным lr в pytorch. В документации написано


{'params': model.base.parameters()},

{'params': model.classifier.parameters(), 'lr': 1e-3}

], lr=1e-2, momentum=0.9)На все слои не указанные в листе lr не распространяется. Может это очевидно, но я возился 3 дня, не понимая почему модель не работает, пока не догадался до такой простой вещи - что надо переписать модель вынеся все свои функции из forward в __init отдельного класса.

Лучшее - враг хорошего.



snakers4 (Alexander), October 25, 11:29

Если вы пытаетесь скрестить код, который должен работать на 2 GPU и код который должен работать только на 1 GPU (ужа с ежом) на Pytorch, не переписывая ни один из них, то такой сниппет поможет вам

import os

os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" # see issue #152



snakers4 (Alexander), October 23, 03:29

Давно не делал подборки с канала. Сделаю несколько штук)

Интересные ссылки на тему DS / ML

68 Cheat sheet-ы Data wrangling - //

69 Bokeh - замена D3.js но на питоне - //

70 Новый курс от - прикладная линейная алгебра - //

71 Быстрый анализ потокового видео - //

72 Sklearn cheat-sheet - //

73 Советы от призеров на Kaggle //

74 Интуиция при использовании t-SNE - //

75 Бенчмарки либ для градиентного бустинга - //

76 ROC и AUC простыми словами - //

77 Еще прогресс бары на питоне - //

78 открыли вторую серию курса про глубокое обучение - //

79 Чит шиты - архитектуры нейросетей - //

80 РАБОТАЮЩИЙ пример multi-curl - //

81 Многопоточность в питоне - //

82 Как эффективно загружать .npy массивы в память в питоне - //

83 Туториалы по Keras + tf с примерами в ipynb - //

84 Новый курс от Andrew Ng - //

85 Разложения матриц - //

86 Дельные статьи с Хабра - //

87 Музыкальные рекоммендации - //

88 Визуализация в виде карты - //

89 Классная презентация про ML в гугле - //

90 Многопоточная работа с файлами в питоне в Keras - //

91 Мобильные архитектуры нейросетей //



Spark in me

Пара сверх-полезных cheat-sheet-ов для "ковыряния" в данных на pandas - Часть раз - Часть два Полезно будет тем, кто только начинает такие "ковыряния". На мой взгляд тут сильно не хватает сводных таблиц. Про них можно прочитать тут: - In a nutshell - - Ссылка #data_science #cheat_sheet

Подборка - статьи и заметки автора

30 Переход на HTTPS - //

31 The art of learning - //

32 Как пользоваться каналом - //

33 Про деплой и поддержку сервера - //

34 Про бекапы - //

35 Про бекенд нашего сайта - //

36 Как пользоваться каналом - //

37 Заметка про Гугл, Андроид, Эппл и машинное обучение - //

39 Книга про самообразование - //

40 Заметка про семантическое ядро - //

41 Заметка про RTB - //

42 Анализ рынка через сайтмапы - //

43 SMTP шлюзы -

44 Сайтмапы - часть 3 //

45 Сайтмапы - часть 2 //

46 Анализ 1.5м фоток квартир - начало - //

47 Визуализации нейросетей - фейл - //

48 Визуализация звука в питоне - //

50 Про глупость и способы ее исправить - //

51 Установка софта для работы с GPU и нейросетями - //

52 Работа с U-NET на практике - //

53 Как тренировать сверточные нейросети в 10 раз быстрее - //

54 Про трудовую миграцию - //



Spark in me

Итак, закончилась небольшая эпопея по переводу сайта на HTTPS. Надеюсь кому-то покажется интересным. Описал основные блоки, которые по идее должны быть применимы для любого веб-проекта. Что самое главное - все старые ссылки и все-все-все должно работать) TLDR - ставьте https сразу и не мучайтесь) - #internet

Подборка - статьи про pytorch

Гайд раз - // и pytorch - //

Цикл статей про SSD на pytorch - //

Pytorch и докер -//

Впечатления про pytorch - //

Расширение классов Pytorch - //

Аугментации на pytorch - //

Pytorch - снижение lr по шагам - //

Внутрянка tf и pytorch - //




Spark in me

Знакомый поделился классным гайдом по PyTorch, который объясняет в чем его фишка. Если вы не пользуетесь Keras и ищете на чем потренироваться - то вам как раз подойдет. #data_science #neural_nets

Подборка - Докер

Как начать в докер - //

Как начать в докер - уже серьезнее - //

Бойлерплейты на докере для DS - //

Pytorch и докер -//

Докер и проброс ssh - //

Как поднять себе окружение в докере с уровня железа




Spark in me

Если вы хотите начать превращать свой локальный или удаленный зоопарк в более структурированный зоопарк, или избавиться от конфликтов софта и необходимости все иметь всегда в последней версии, то вот несколько хороших вводных точек про докер - Раз - Два #linux

snakers4 (Alexander), October 21, 14:12

Если используете pytorch, то самый простой способ посмотреть картинку в формате генератора pytorch примерно такой. Поменять каналы местами, перевести в float, нормализовать. Тогда легко открыть картинку через pyplot.

img = images[15].cpu().numpy().astype(np.float32).transpose((1, 2, 0))

img += -img.min()

img *= (1/img.max())



snakers4 (Alexander), October 18, 04:47

Копипаста на pytorch для снижения lr по шагам.


parser.add_argument('--gamma', default=0.1, type=float, help='Gamma update for SGD')



stepvalues = (80000, 100000, 120000)


if iteration in stepvalues:

step_index += 1

adjust_learning_rate(optimizer, args.gamma, step_index)


def adjust_learning_rate(optimizer, gamma, step):

parser.add_argument('--gamma', default=0.1, type=float, help='Gamma update for SGD')

lr = * (gamma ** (step))

for param_group in optimizer.param_groups:

param_group['lr'] = lr#pytorch

snakers4 (Alexander), October 15, 04:20

В процессе ковыряния SSD нашел такой бойлерплейт для своих кастомных аугментаций на pytorch. Приятность состоит в том, что все такие штуки очень удобно реализовывать на основе их готовых классов





ssd.pytorch - A PyTorch Implementation of Single Shot MultiBox Detector

snakers4 (Alexander), October 14, 04:34

Пробую Pytorch ( - у меня пока безумно позитивные ощущения. Внезапно там гимора больше чем в керасе раза в 2-3, но свобода почти абсолютно полная. Очень много сахара программного, но работа с большим числом карточек (>1) делается одной оберткой.

Довольно легко расширять классы. Документация отстает от функционала, но поэтому проще читать сорс код. Примеры в документации по архитектурам и fine-tuning просто отличные, хоть и громоздкие. Зато они настроены на профессиональное использование.

Из чисто технических плюсов - граф расчетов в торче динамический, т.е. мы можем по понедельникам делать одно, а по вторникам другое (в этих двух гайдах лучше написано - -

Из минусов:

- нет такого же тула как Tensorboard. Для этих целей все используют visdom насколько я понимаю - . Что с одной стороны отлично, т.к. можно делать все, что угодно, а с другой нужно

- нет встроенных оберток для коллбеков в виде early stopping, lr decay и прочих вкусностей. Есть такой репозиторий - но мне говорили что он пока очень сырой -

- аугментации и работа с картинками - все построены на PIL, что как бы не тру - их там кот наплакал. Благо все очень легко дописывается

Есть опция работы на (!) кластере компьютеров с GPU через сеть.



snakers4 (Alexander), October 12, 03:29

Заметка - если вы используете pytorch через докер с их загрузчиками данных, не удивляйтесь, если ничего не будет работать.

Докер надо запускать с флагом nvidia-docker run --shm-size 2G (вставьте сколько не жалко), потому что он использует дисковый кеш и его стандартный размер стоит 64M.

Больше про подобные флаги:

- тут

- и тут



Docker run reference

Configure containers at runtime