snakers4 | Technologies

Telegram-канал snakers4 - Spark in me

2278

Lost like tears in rain. DS, ML, a bit of philosophy and math. No bs or ads.

Subscribe to a channel

Spark in me

Пара занятных (на сразу очевидных) вещей в Jupiter notebook.

1
Посмотреть docstring документацию
- tab - авто-дополнение
- shift + tab - открыть документацию

2
Отладка. Как правило она нужна редко (лично мне), но иногда бывает полезно посмотреть какие значения переменных внутри без написания микро-тестов.

- Раз - как юзать https://davidhamann.de/2017/04/22/debugging-jupyter-notebooks/
- Два - cheat sheet с командами -http://frid.github.io/blog/2014/06/05/python-ipdb-cheatsheet/

Читать полностью…

Spark in me

https://youtu.be/St5lxIxYGkI

Читать полностью…

Spark in me

Gtop – Awesome Graphical System Monitoring Dashboard For Terminal
-> https://goo.gl/nEpSi7

Читать полностью…

Spark in me

Интересное в мире интернета:
- Ben Evans - https://goo.gl/kfZ1PN
-- В Америке банки будут осуществлять переводы друг другу в течение дня https://goo.gl/Kn5fAK
-- Гугл платит несколько миллиардов долларов Apple за установку своего поиска на их дивайсы - https://goo.gl/Argq2M
-- LinkedIn подавал в суд на компанию, которая парсит с него публичную информацию и проиграл - https://goo.gl/ZfXF6D
-- 29m миллениалов смотрят новости ... в Снепчате - https://goo.gl/LMRRBL (мир сходит с ума)
-- Apple инвестирует US$1bn в видео-контент - https://www.wsj.com/articles/apple-readies-1-billion-war-chest-for-hollywood-programming-1502874004

#internet

Читать полностью…

Spark in me

Отличная статья - сравнение tensorflow и pytorch. Если вы сомневаетесь с чего начать (начните с Keras).

In a nutshell - Pytorch это замена numpy для матричных вычислений на GPU, tensorflow - кроссплатформенный и с поддержкой удобных фич для деплоя + работает с Keras.

https://awni.github.io/pytorch-tensorflow/

#data_science

Читать полностью…

Spark in me

Забавно, fast.ai делают бесплатным участие в своем очном курсе лекций для тех, кто "Identify as a woman, person of Color, LGBTQ person, person with a disability, and/or veteran" и предлагают 5 удаленных scholarship на свой семестр в этом году:
- http://www.fast.ai/2017/08/15/diversity/
- http://www.fast.ai/2017/08/17/diversity-sponsors/

Может какая-то девушка сможет получить себе лычку.
Вероятно в Америке все помешаны на "равных" правах.

Читать полностью…

Spark in me

Интересные статьи про Kaggle
- https://habrahabr.ru/post/335786/ - про недавнее соревнование про Амазонку
- Моделирование финансовых рядов - модели и инжиниринг фич
-- Раз https://goo.gl/tXLnp2
-- Два https://goo.gl/ZcdjR1

#data_science

Читать полностью…

Spark in me

Собрал все свои заморочки и фишки для тренировки нейросетей в одном месте, на финишной прямой для модели для приложения по распознаванию голосов птиц.

Ну или статья про то, как тренировать нейросети на большом количестве данных в 10-20 раз быстрее.

Тренировать получается безумно круто, а самой моделью, как всегда есть моменты =)

- https://spark-in.me/post/bird-voice-recognition-eight

#data_science

Читать полностью…

Spark in me

Неплохая подборка копипасты про one-hot encoding в питоне
- http://pbpython.com/categorical-encoding.html

#data_science

Читать полностью…

Spark in me

Подход с использованием модифицированного генератора для Keras, описанный выше - рабочий.

#data_science

Читать полностью…

Spark in me

Генерилка девушек из аниме с помощью генеративных нейросетей. Внезапно.
- https://goo.gl/4g7H1a
- http://make.girls.moe/#/

#data_science

Читать полностью…

Spark in me

Занятный новый формат написания медицинского софта
- Весь проект это набор задач на гитхабе
- Принять участие можно просто сделав Pull Request
- Призы за лучшие сабмиты дают пропорционально участию и оценкам
- https://concepttoclinic.drivendata.org/

Вот только странно - тут бюджет US100k на все, а конкурс на каггле на который они явно ссылаются как на базу стоит миллион только за алгоритмы...

#data_science

Читать полностью…

Spark in me

Интересное в мире интернета:
- Ben Evans - https://goo.gl/t7823G
-- Анализ сервисов Apple - https://goo.gl/ottyfh
-- Картинка - https://goo.gl/d4iZgP
-- FB покупает права на эксклюзивное видео - https://goo.gl/3xtbJ8
-- Дисней открывет свой собственный видео-сервис - https://goo.gl/jjKADA
-- Якобы можно найти самолеты-шпионы через случайные леса и публичные данные о самолетах в США - https://goo.gl/UrVZs2

#internet

Читать полностью…

Spark in me

Читая почту, натолкнулся вот на такой Kernel. Внутри визуализация данных исследования Stack Overflow с помощью plotly в виде карты.
Внезапно я искал средства визуализации данных на карте, оказывается plotly делает это на питоне из коробки.
- https://www.kaggle.com/asindico/exploratory-analysis/notebook
- https://plot.ly/python/choropleth-maps/
Один только минус - сам продукт по идее платный.

В следующий раз, когда вам нужна будет карта или сложная визуализация - может в plot.ly будут примеры)

#data_science

Читать полностью…

Spark in me

Нашел еще один блог про state-of-the-art DS/AI/Deep Learning:
- https://blog.openai.com

Там можно подписаться на рассылку.

#data_science

Читать полностью…

Spark in me

Интересное в мире DS / ML:
- HyperNet - DNN для быстрого перебора архитектур нейросетей (якобы быстрее чем брут форс подходы гугла) - https://goo.gl/478xh6
- Import AI - https://goo.gl/ztVdtf
-- Про соревнование про поиск рака матки - https://goo.gl/NX5PnL
--- Использовался PCA чтобы отфильтровать похожие картинки и сделать хороший валидационный датасет
--- Основные модели - фичи VGG-16 и faster R-CNN
-- Andrew Ng - основал фонд на US$150m - https://goo.gl/jqEWX2
-- MS выложили датасет словесных запросов людей на 11 гигабайт - https://goo.gl/auTVJM
-- Китай всерьез взялся за лидерство в ML - https://goo.gl/AbTgFB
-- Картинка - инвестиции в Китае в беспилотные авто - https://goo.gl/pLVypW
-- Китайцы выложили в паблик 80 Эксабайт ультразвуковых сканов сердца. ImageNet весит к примеру десятки гигабайт
-- Датасет и стенограмм речей в Ирландском парламенте почти за 100 лет...может кому надо профессионально - https://goo.gl/MzSW4R
-- Генерация лиц в высоком разрешении - https://goo.gl/kNwzDq

#data_science

Читать полностью…

Spark in me

Более няшный аналог glances

Читать полностью…

Spark in me

Прочитал на Хабре статью про неуспешную трудовую эмиграцию. Это натолкнуло на мысль описать свой опыт в этой сфере. Может кому-то поможет избежать очевидных и досадных ошибок.

Читайте, комментируйте =)

https://spark-in.me/post/labour-emmigration-as-seen-by-former-investment-banker

Читать полностью…

Spark in me

Open-cv теперь поддерживает импорт DNN моделей
- http://www.pyimagesearch.com/2017/08/21/deep-learning-with-opencv/

Внезапно.

#data_science

Читать полностью…

Spark in me

То, что показалось интересным / занятным из 6 урока из курса fast.ai (https://goo.gl/eymAQJ):

Общее:

- Для задач на Kaggle зачастую подход с использованием разметки test-датасета для тренировки модели в пропорции 30%/70% может помочь улучшить скор своей модели;
- Для этой цели можно просто создать папочки (или написать свой генератор и вариацию на его тему, как сделал тут ) или использовать такой бойлерплейт чтобы смешивать несколько генераторов
```class MixIterator(object):
def __init__(self, iters):
self.iters = iters
self.multi = type(iters) is list
if self.multi:
self.N = sum([it[0].N for it in self.iters])
else:
self.N = sum([it.N for it in self.iters])

def reset(self):
for it in self.iters: it.reset()

def __iter__(self):
return self

def next(self, *args, **kwargs):
if self.multi:
nexts = [[next(it) for it in o] for o in self.iters]
n0s = np.concatenate([n[0] for n in o])
n1s = np.concatenate([n[1] for n in o])
return (n0, n1)
else:
nexts = [next(it) for it in self.iters]
n0 = np.concatenate([n[0] for n in nexts])
n1 = np.concatenate([n[1] for n in nexts])
return (n0, n1)```-

В лекции разбираются RNN на простых примерах:

- Картинки для развития интуиции про рекуррентные нейросети
-- Примитивный случай - предсказываем 1 символ, кормим модели 1 дополнительный прошлый символ - https://goo.gl/41w2iQ
-- Чуть менее примитивный - предсказываем 1 символ, кормим 2 прошлых символа - https://goo.gl/L4yiQh
-- Обобщение - уже используем n-1 прошлых символов - https://goo.gl/5AbKSY
-- Уже предсказываем несколько символов - https://goo.gl/nSpc1b
- Усложняем - скармливаем выход одной RNN в другую https://goo.gl/jzkscu
-- Дальше уже нужно строить модели, которые учитывают долгосрочные зависимости (LSTM), что занимает на порядки больше вычислительной мощности

- Theano держит в памяти RNN в свернутой форме, в то время как tf - в полной форме

- Для RNN подходят почти любые активационные функции по форме похожие на сигмоиду, но быстрее всего работают RELU

- Веса RNN лучше задавать как единичные матрицы, т.к. это соответствует состоянию когда прошлый символ не влияет на следующий

- Лучшая статья в мире про рекуррентные нейросети
-- http://karpathy.github.io/2015/05/21/rnn-effectiveness/

- В рекуррентных нейросетях можно использовать embeddings вместо one-hot-encoded подхода (bad of words)

PS
На датасете с птицами Squuze-net дает точность 50% на 213 классах, может стоит попробовать модели RNN?

#data_science

Читать полностью…

Spark in me

Еще один пример коллбеков для Keras от подписчика канала
# Callback
'''
{epoch:02d}-{val_loss:.2f} - Можно использовать эти переменные дл названия файла
callbacks.TerminateOnNaN() - Выход из обучения без ошибки в случае None
callbacks.TensorBoard() - Сохраняем в TensorBoard
histogram_freq - Если много эпох то возможно следует указать раз в сколько эпох сохранять
batch_size - Если batch_size в обучении очень маленький - можно указать тут его больше чтобы не рос размер лога

Если оставить по умолчанию то на ~80 000 семплах и 1000 эпохах можно получить 25ГБ логов (зависит от модели)
'''
checkpoint_name = 'weights.{epoch:02d}-{val_loss:.2f}.hdf5'
CallBack = [
callbacks.TerminateOnNaN(),
callbacks.TensorBoard(log_dir=path, histogram_freq=30, batch_size=batch_size, write_graph=True,
write_grads=True, write_images=True, embeddings_freq=0, embeddings_layer_names=None,
embeddings_metadata=None),
callbacks.ModelCheckpoint(path + '/' + checkpoint_name, monitor='val_loss', verbose=0, save_best_only=True,
save_weights_only=False, mode='min', period=30)]
#data_science

Читать полностью…

Spark in me

Я болел по сути 1.5 недели, не делал рассылки на почту. Вернуть их обратно?

Нет – 49
👍👍👍👍👍👍👍 58%

Да – 36
👍👍👍👍👍 42%

Своё, в личку
▫️ 0%

👥 85 people voted so far.

Читать полностью…

Spark in me

Если вы тренируете нейросети на большом количестве эпох, и не хотите за ними следить, то вот парочка бойлерплейтов:

- циклические изменения LR - https://github.com/bckenstler/CLR/blob/master/clr_callback_tests.ipynb
- небольшой сниппет с коллбеками в keras:

callbacks = [EarlyStopping(monitor='val_acc',
patience=8,
verbose=1,
min_delta=1e-4,
mode='max'),
ReduceLROnPlateau(monitor='val_acc',
factor=0.1,
patience=4,
verbose=1,
epsilon=1e-4,
mode='max'),
ModelCheckpoint(monitor='val_acc',
filepath='squeeze_net_no_aug.h5',
save_best_only=True,
save_weights_only=False,
mode='max'),
# TensorBoard(log_dir='logs'),
CSVLogger('last_training_log.csv', separator=',', append=False)
]

# model.load_weights('squeeze_net_no_aug.h5')

model.fit_generator(
generator=custom_train,
validation_data = custom_valid,
# steps_per_epoch = 10,
steps_per_epoch=int(np.floor(train_image_count/batch_size)),
validation_steps = int(np.floor(valid_image_count/batch_size)),
epochs=50,
callbacks=callbacks
)
#data_science

Читать полностью…

Spark in me

Небольшая подборка про мобильные / компактные архитектуры нейросетей:
- Статьи
-- Squeezenet
-- Mobile net Google
- Имплементации Squeezenet
-- https://github.com/rcmalli/keras-squeezenet
-- https://github.com/DT42/squeezenet_demo/blob/master/model.py
- Применение
-- https://goo.gl/RxQ6db

#data_science

Читать полностью…

Spark in me

В проекте с птицами у меня вышло 800,000 файлов (и это не полный датасет).

Можно конечно взять обычный генератор Keras, но люди пишут что многопоточность ускоряет тренировку нейросетей в 3-4 раза
- https://github.com/stratospark/keras-multiprocess-image-data-generator

В сочетании с SqueezeNet - можно добиться скорости тренировки нейросети еще в несколько раз выше. На практике у меня также получалось ускорять разные архитектуры нейросетей вставляя в них batch_norm слои.

Озадачился вопросом - как читать очень много маленьких файлов с диска параллельно, причем при этом читая положение файлов из dataframe и как написать генератор на Keras, который бы пользовался этим ускорением.

Натолкнулся на целый ряд полезных источников и ссылок
- Раз https://bcolz.readthedocs.io/en/latest/intro.html#bcolz-at-glance
- Два https://techblog.appnexus.com/a-keras-multithreaded-dataframe-generator-for-millions-of-image-files-84d3027f6f43
- Три https://gist.github.com/timehaven/257eef5b0e2d9e2625a9eb812ca2226b#file-classifier_from_little_data_script_dfgen-py
- Четыре https://github.com/fchollet/keras/issues/1627

Может кому-то пригодится подборка.
Когда я разберусь в этих дебрях - выложу работающий бойлерплейт.

#data_science

Читать полностью…

Spark in me

Интересное в мире ML:

- Еще раз про новый курс Andrew Ng про Deep Learning - если вы не видели - народ пишет, что курс весьма поверхностный - https://goo.gl/PiJk18
- Американские ученые превращают рисованные формулы в формулы LATEX с помощью нейросетей - https://goo.gl/MDhJHw
- Оказывается есть и такое - датасет с картинками и ответами на вопрос типа "какого цвета глаза у девушки" - https://goo.gl/oTWzMF
- Facebook открывает датасет с ... 65k играми в СтарКрафт - https://research.fb.com/publications/stardata-a-starcraft-ai-research-dataset/
- Онлайн туториал по Tensorflow состоящий из простых примеров - https://goo.gl/AKnhXc

#data_science

Читать полностью…

Spark in me

Очень интересная презентация от Jeff Dean (Senior Researcher) из Google Brain про тренды современного ML и успехи Гугла (Tensorflow, TPU, продукты Гугла):
- Видео - https://blog.ycombinator.com/jeff-deans-lecture-for-yc-ai/
- Презентация - https://goo.gl/zQWTDf

#data_science

Читать полностью…

Spark in me

Решил поучаствовать ради интереса в "простом" соревновании на Kaggle, чтобы познакомиться с архитектурой U-NET и набить руку немного при работе с картинками и питоном.

Пока модели тренируются, вот мои общие впечатление от такой архитектуры. Может я что-то уловил неверно, но было весьма интересно пошерстить интернет:
- https://spark-in.me/post/unet-adventures-part-one-getting-acquainted-with-unet

#data_science

Читать полностью…

Spark in me

Как построить простые музыкальные рекомендации:
- http://mattmurray.net/building-a-music-recommender-with-deep-learning/

По сути подход на 100% такой же как при анализе голосов птиц на нашем сайте)
Очень занятно.

#data_science

Читать полностью…

Spark in me

Не читал рассылки с Хабра достаточно давно (т.к. 90% информации там - реклама или мусор). Выздоровев, решил разобрать почту. Вот, что накопал из непрочитанного за несколько месяцев.

Выписал интересные ссылки - может вам понравятся:
- Список книг про нейросети - https://goo.gl/voq6tM . Сам я читал эти книги (и рекоммендую их) - а еще они в свободном доступе:
-- deeplearningbook.org
-- neuralnetworksanddeeplearning.com
- Вменяемая статья про дедлоки в постгресе - https://goo.gl/ARpbJc
- Откуда берется расписания на Tutu.ru - https://goo.gl/HhhwAq - огромная работа
- Новые способы ускорения обучения нейросетей - https://goo.gl/zNUvD2
- Интересные функции Google Sheets, о которых я не знал - https://goo.gl/AGH4nh
- Пояснения про Dropout в нейросетях - https://goo.gl/1Fqa1n
- Если кто-то захочет поднять дашборд на питоне с bokeh - вот гайд - https://goo.gl/wmwXje - а так по идее и jupyter notebook хватает

#digest
#internet
#data_science

Читать полностью…
Subscribe to a channel