Пара занятных (на сразу очевидных) вещей в 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/
Gtop – Awesome Graphical System Monitoring Dashboard For Terminal
-> https://goo.gl/nEpSi7
Интересное в мире интернета:
- 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
Отличная статья - сравнение tensorflow и pytorch. Если вы сомневаетесь с чего начать (начните с Keras).
In a nutshell - Pytorch это замена numpy для матричных вычислений на GPU, tensorflow - кроссплатформенный и с поддержкой удобных фич для деплоя + работает с Keras.
https://awni.github.io/pytorch-tensorflow/
#data_science
Забавно, 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/
Может какая-то девушка сможет получить себе лычку.
Вероятно в Америке все помешаны на "равных" правах.
Интересные статьи про Kaggle
- https://habrahabr.ru/post/335786/ - про недавнее соревнование про Амазонку
- Моделирование финансовых рядов - модели и инжиниринг фич
-- Раз https://goo.gl/tXLnp2
-- Два https://goo.gl/ZcdjR1
#data_science
Собрал все свои заморочки и фишки для тренировки нейросетей в одном месте, на финишной прямой для модели для приложения по распознаванию голосов птиц.
Ну или статья про то, как тренировать нейросети на большом количестве данных в 10-20 раз быстрее.
Тренировать получается безумно круто, а самой моделью, как всегда есть моменты =)
- https://spark-in.me/post/bird-voice-recognition-eight
#data_science
Неплохая подборка копипасты про one-hot encoding в питоне
- http://pbpython.com/categorical-encoding.html
#data_science
Подход с использованием модифицированного генератора для Keras, описанный выше - рабочий.
#data_science
Генерилка девушек из аниме с помощью генеративных нейросетей. Внезапно.
- https://goo.gl/4g7H1a
- http://make.girls.moe/#/
#data_science
Занятный новый формат написания медицинского софта
- Весь проект это набор задач на гитхабе
- Принять участие можно просто сделав Pull Request
- Призы за лучшие сабмиты дают пропорционально участию и оценкам
- https://concepttoclinic.drivendata.org/
Вот только странно - тут бюджет US100k на все, а конкурс на каггле на который они явно ссылаются как на базу стоит миллион только за алгоритмы...
#data_science
Интересное в мире интернета:
- 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
Читая почту, натолкнулся вот на такой Kernel. Внутри визуализация данных исследования Stack Overflow с помощью plotly в виде карты.
Внезапно я искал средства визуализации данных на карте, оказывается plotly делает это на питоне из коробки.
- https://www.kaggle.com/asindico/exploratory-analysis/notebook
- https://plot.ly/python/choropleth-maps/
Один только минус - сам продукт по идее платный.
В следующий раз, когда вам нужна будет карта или сложная визуализация - может в plot.ly будут примеры)
#data_science
Нашел еще один блог про state-of-the-art DS/AI/Deep Learning:
- https://blog.openai.com
Там можно подписаться на рассылку.
#data_science
Интересное в мире 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
Прочитал на Хабре статью про неуспешную трудовую эмиграцию. Это натолкнуло на мысль описать свой опыт в этой сфере. Может кому-то поможет избежать очевидных и досадных ошибок.
Читайте, комментируйте =)
https://spark-in.me/post/labour-emmigration-as-seen-by-former-investment-banker
Open-cv теперь поддерживает импорт DNN моделей
- http://www.pyimagesearch.com/2017/08/21/deep-learning-with-opencv/
Внезапно.
#data_science
То, что показалось интересным / занятным из 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
Еще один пример коллбеков для 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
Я болел по сути 1.5 недели, не делал рассылки на почту. Вернуть их обратно?
Нет – 49
👍👍👍👍👍👍👍 58%
Да – 36
👍👍👍👍👍 42%
Своё, в личку
▫️ 0%
👥 85 people voted so far.
Если вы тренируете нейросети на большом количестве эпох, и не хотите за ними следить, то вот парочка бойлерплейтов:
- циклические изменения 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
Небольшая подборка про мобильные / компактные архитектуры нейросетей:
- Статьи
-- 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
В проекте с птицами у меня вышло 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
Интересное в мире 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
Очень интересная презентация от 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
Решил поучаствовать ради интереса в "простом" соревновании на Kaggle, чтобы познакомиться с архитектурой U-NET и набить руку немного при работе с картинками и питоном.
Пока модели тренируются, вот мои общие впечатление от такой архитектуры. Может я что-то уловил неверно, но было весьма интересно пошерстить интернет:
- https://spark-in.me/post/unet-adventures-part-one-getting-acquainted-with-unet
#data_science
Как построить простые музыкальные рекомендации:
- http://mattmurray.net/building-a-music-recommender-with-deep-learning/
По сути подход на 100% такой же как при анализе голосов птиц на нашем сайте)
Очень занятно.
#data_science
Не читал рассылки с Хабра достаточно давно (т.к. 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