Обновить
512K+

Python *

Высокоуровневый язык программирования

356,35
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Распознаем номера автомобилей. Разработка multihead-модели в Catalyst

Время на прочтение5 мин
Охват и читатели8.2K

Фиксация различных нарушений, контроль доступа, розыск и отслеживание автомобилей – лишь часть задач, для которых требуется по фотографии определить номер автомобиля (государственный регистрационный знак или ГРЗ). 

В этой статье мы рассмотрим создание модели для распознавания с помощью Catalyst – одного из самых популярных высокоуровневых фреймворков для Pytorch. Он позволяет избавиться от большого количества повторяющегося из проекта в проект кода – цикла обучения, расчёта метрик, создания чекпоинтов моделей и другого – и сосредоточиться непосредственно на эксперименте.

Сделать модель для распознавания можно с помощью разных подходов, например, путем поиска и определения отдельных символов, или в виде задачи image-to-text. Мы рассмотрим модель с несколькими выходами (multihead-модель). В качестве датасета возьмём датасет с российскими номерами от проекта Nomeroff Net. Примеры изображений из датасета представлены на рис. 1.

Читать далее

Django Rest Framework для начинающих: создаём API для чтения данных (часть 1)

Время на прочтение11 мин
Охват и читатели204K

Меня зовут Стас Гаранжа, я выпускник курса «Python-разработчик» в Яндекс.Практикуме. Я хочу помочь начинающим разработчикам, которые приступили к изучению Django Rest Framework (DRF) и хотят разобраться, как устроен этот фреймворк.


Я готовлю цикл статей, в которых расскажу о разных сторонах работы DRF. У меня пока нет значимого практического опыта для описания всех изюминок при работе с этим фреймворком, поэтому в основе статьи — исследование, обобщение и по возможности непротиворечивое изложение того, что у DRF под капотом.


В этой статье разберёмся, как сделать REST API на базе Django Rest Framework, чтобы получить по GET-запросу набор записей из базы данных (БД). Иными словами, рассмотрим, как DRF работает на чтение (о том, как с помощью него создавать, изменять и удалять записи в БД, поговорим в отдельной статье).


Общую схему решения этой задачи мы рассмотрим в первой части статьи. Вторая будет посвящена детальному разбору процесса сериализации данных.


Читать дальше →

DataScience Digest — 10.06.21

Время на прочтение3 мин
Охват и читатели2.3K

Приветствую всех!

На протяжении долгого времени я не публиковал свежих выпусков Data Science Digest, а сейчас пришло время его возродить. Выходить дайджест будет еженедельно по четвергам. 

Встречайте свежий выпуск дайджеста полезных материалов из мира Data Science & Machine Learning и не забывайте подписываться на наш Telegram-канал.

Читать дальше →

Абстрактные синглтоны, фабрики или 665 принцип ООП

Время на прочтение4 мин
Охват и читатели9K

В современном мире ООП стало неотъемлимой частью разработки. Многие популярные языки, такие как Pyhon, Jaba, Hachkell, GOO и C== поддерживают данную парадигму. В этой статье я постараюсь раскрыть смысл таких архитектурных конструкций, как абстрактный синглтон и фабрика абстрактных синглтонов.

Читать далее

Оптимизации портфеля с помощью Python и PyPortfolioOpt

Время на прочтение6 мин
Охват и читатели29K

Портфельная теория Марковица(далее ПТМ) (Modern portfolio theory) — разработанная Гарри Марковицем методика формирования инвестиционного портфеля, направленная на оптимальный выбор активов, исходя из требуемого соотношения доходность/риск. Сформулированные им в 1950-х годах идеи составляют основу современной портфельной теории.

Основные положения портфельной теории были сформулированы Гарри Марковицем при подготовке им докторской диссертации в 1950—1951 годах.

Рождением же портфельной теории Марковица считается опубликованная в «Финансовом журнале» в 1952 году статья «Выбор портфеля». В ней он впервые предложил математическую модель формирования оптимального портфеля и привёл методы построения портфелей при определённых условиях. Основная заслуга Марковица состояла в предложении вероятностной формализации понятий «доходность» и «риск», что позволило перевести задачу выбора оптимального портфеля на формальный математический язык. Надо отметить, что в годы создания теории Марковиц работал в RAND Corp., вместе с одним из основателей линейной и нелинейной оптимизации — Джорджем Данцигом и сам участвовал в решении указанных задач. Поэтому собственная теория, после необходимой формализации, хорошо ложилась в указанное русло.

Читать далее

Как использовать Python для проверки протокола Signal

Время на прочтение12 мин
Охват и читатели5.1K

Galois работает над повышением удобства SAW, инструмента для верификации программ на C и Java, исходный код которого открыт. Основным способом взаимодействия пользователей с SAW является его спецификация и язык программирования сценариев. Чтобы сделать SAW как можно более доступным, в качестве языка программирования SAW теперь можно использовать Python! Для демонстрации этой новой возможности в Galois создали пример, выполнив проверку части реализации протокола Signal на языке С. В частности, как спецификация SAW определяются условия, при которых сообщение протокола Signal будет успешно аутентифицировано. К старту курса о Fullstack-разработке на Python мы перевели материал об этом примере.

Читать далее

ML глазами практикующего трейдера

Время на прочтение12 мин
Охват и читатели20K

Сразу скажу что назвать себя программистом или знатоком машинном обучении у меня язык не поворачивается, скажем так - программирую я лучше 90% трейдеров и разбираюсь в трейдинге лучше 99% программистов и datascientists. Это не к тому что я такой молодец, это скорей к вопросу какая дыра непонимания существует между областями знаний, которую я попытаюсь немножко устранить.

Я веду свой блог на трейдерском сайте, где описываю свои подходы прикрутить ML к трейдингу. При том что я сам весьма начинающий в области ML, прямо скажем я не часто встречаю релевантные отзывы, ибо 90% практикующих трейдеров о нейросетях только слышали и имеют представление о нем как о розовом пони. В равной мере когда я вижу как какой то чистый математик или програмист пробует реализовать свои знания применительно к фондовому рынку, у меня частенько начинает литься кровь из глаз.

Написать свой первый пост на хабре меня сподвигла 2 статьи на хабре на тему прогнозирования активов, одна совсем древняя, другая свежая, я даже ее откаментировал. Так часто бывает когда что то хорошее вызывает желание алаверды. А статья хороша хотя бы тем, что там совершенно верный подход к трейдингу на финансовых рынках: "выдвигаем гипотезу-тестируем на истории". Ничего лучше не придумано (хотя наверно есть гении которые могут познав суть предмета, прогнозировать его дальнейшее состояние, даже такое, которое раньше не существовало в истории). Многие трейдеры вообще этого не понимают, предпочитая торговать по книжкам гуру или избитым техиндикаторам. Можно было бы бомбить эту статью комментариями, но справедливее, помимо критики было бы написать что то полезное для всех ребят из IT ("критикуешь?! А ты предложи что то взамен!"), которые вооружившись инструментарием ML хотят попробовать реализовать свои знания на финансовых рынках. А этот интерес очевидный, так как финансовый рынок как своего рода интеллектуальное казино предоставляет возможность капитализировать свои знания, трудолюбие, талант, осталось дело за малым - создать рабочий алгоритм позволяющий выносить денюжки с рынка. На языке трейдеров называется это алготрейдингом. Но много ли вы слышали о удачном применении ML в трейдинге? Я лично нет, хотя можно самоуспокоиться тем, что удачные реализации никто светить не будет, и все на самом деле работает и пока мы тут пишем и читаем, кто то удачно вооружившись градиентным бустингом или сверточной сетью делает профиты мозолистыми пальцами, холодной головой и горячим сердцем. Но сдается мне не так все просто. Помимо того что фондовый рынок вообще нельзя прогнозировать (ога!), тут есть некоторые проблемы реализации, которые я попытаюсь, путанно, но изложить.

Читать далее

Анализ сообщений коммерческого чата на предмет игнорирования вопроса клиента на основе модели nlp

Время на прочтение8 мин
Охват и читатели3.5K

Задача – «Провести анализ сообщений коммерческого чата на предмет игнорирования вопроса клиента менеджером компании»

На входе: лог чатов с клиентом компании в csv формате.

Читать далее

Обучаем качественные модели без DensePose разметки

Время на прочтение2 мин
Охват и читатели2.1K

Возможно ли обучить качественную модель, которая предсказывает 3D координаты поверхности тела животного по фотографии, без соответствующей DensePose разметки?

В предверии CVPR2021 вспомним, что исследователи из Facebook Artificial Intelligence Research смогли предложить на конференции по машинному зрению годом ранее.

Читать далее

SQLAlchemy: а ведь раньше я презирал ORM

Время на прочтение10 мин
Охват и читатели45K

Так вышло, что на заре моей карьеры в IT меня покусал Oracle -- тогда я ещё не знал ни одной ORM, но уже шпарил SQL и знал, насколько огромны возможности БД.

Знакомство с DjangoORM ввело меня в глубокую фрустрацию. Вместо возможностей -- хрена с два, а не составной первичный ключ или оконные функции. Специфические фичи БД проще забыть. Добивало то, что по цене нулевой гибкости мне продавали падение же производительности -- сборка ORM-запроса не бесплатная. Ну и вишенка на торте -- в дополнение к синтаксису SQL надо знать ещё и синтаксис ORM, который этот SQL сгенерирует. Недостатки, которые я купил за дополнительную когнитивную нагрузку -- вот уж где достижение индустрии. Поэтому я всерьёз считал, что без ORM проще, гибче и в разы производительнее -- ведь у вас в руках все возможности БД.

Так вот, эта история с SQLAlchemy -- счастливая история о том, как я заново открыл для себя ORM. В этой статье я расскажу, как я вообще докатился до такой жизни, о некоторых подводных камнях SQLAlchemy, и под конец перейду к тому, что вызвало у меня бурный восторг, которым попытаюсь с вами поделиться.

SELECT article FROM habr

«A/B-тест» в инженерно-геологических изысканиях на языке Python

Время на прочтение7 мин
Охват и читатели7.7K

При выполнении инженерно-геологических изысканий может возникнуть задача, связанная с сопоставлением данных полевых и лабораторных исследований на одних и тех же грунтах, с целью подтверждения корректной транспортировки проб от объекта изысканий до лаборатории (образцы не были деформированы и/или разрушены в ходе перевозки).

При данной постановке задачи можно применить методику A/B-тестирования.

Читать далее

Ptpython: улучшенный REPL для Python

Время на прочтение4 мин
Охват и читатели12K
Возникало ли у вас когда-нибудь желание быстро испытать какую-нибудь свежую идею, прибегнув к интерфейсу командной строки Python, к REPL? Вероятно, если речь идёт об эксперименте буквально с несколькими строками кода, вам просто не захочется создавать для этого новый «блокнот» Jupyter.

Но в подобной ситуации, возможно, вас не особенно порадует и перспектива использования классической консоли Python, так как она, в отличие от Jupyter Notebook, не поддерживает автодополнение ввода и не умеет работать с документационными строками. В REPL, кроме того, нельзя, после нажатия на Enter, исправлять ошибки в коде.

Что если можно было бы превратить довольно-таки скучную командную строку Python в многофункциональный инструмент, вроде того, запись работы с которым показана ниже?


Продвинутая командная строка Python

Собственно, именно на тех, у кого возникает подобное желание, и ориентирован проект ptpython.
Узнать подробности

Реферальная система в Telegram ботах

Время на прочтение4 мин
Охват и читатели74K

Всем привет! Наверняка вы видели в различных ботах ссылку типа https://t.me/<юзернейм_бота>?start=<число>. Обычно в качестве числа указывается Telegram ID реферера. В этой статье я расскажу как обрабатывать такие ссылки в своем боте.

Для разработки ботов я использую Python библиотеку pytelegrambotapi.

Для начала создадим тестового бота.

Читать далее

Ближайшие события

Упадок RNN и LSTM сетей

Время на прочтение7 мин
Охват и читатели16K

Перевод: Давыдов А.Н.

Мы полюбили RNN (рекуррентные нейронные сети), LSTM (Long-short term memory), и все их варианты. А теперь пора от них отказаться!

В 2014 году LSTM и RNN, были воскрешены. Но мы были молоды и неопытны. В течении нескольких лет они был способом решения таких задач как: последовательное обучение, перевод последовательностей (seq2seq). Так же они позволили добиться потрясающих результатов в понимании речи и переводе ее в текст. Эти сети поспособствовали восхождению таких голосовых помощников как Сири, Кортана, голосовые помощники Гугл и Алекса. Не забудем и машинный перевод, который позволил нам переводить документы на разные языки. Или нейросетевой машинный перевод, позволяющий переводить изображения в текст, текст в изображения, делать субтитры для видео и т.д.

Затем, в последующие годы (2015-16) появились ResNet и Attention («Внимание»). Тогда начало приходить понимание, что LSTM – была умной техникой обойти, а не решить задачу. Так же Attention показал, что MLP сеть (Multi-Layer Perceptron Neural Networks -многослойные персептроны) может быть заменена усредняющими сетями, управляемыми вектором контекста. (более подробно об этом дальше).

Прошло всего 2 года, и сегодня мы можем однозначно сказать:

«Завязывайте с RNN и LSTM, они не так хороши!»

Можете не принимать наши слова на веру, просто посмотрите, что сети на основе Attention используют такие компании как Гугл, Фэйсбук, Сэйлфорс и это только некоторые из них. Все эти компании заменили RNN сети и их варианты на сети основанные на Attention и это только начало. Дни RNN сочтены во всех приложениях, так как они требуют больше ресурсов для обучения и работы, чем модели основанные на Attention.

Читать далее

Искусство написания циклов на Python

Время на прочтение4 мин
Охват и читатели115K


Цикл for — самый базовый инструмент потока управления большинства языков программирования. Например, простой цикл for на C выглядит так:

int i;
for (i=0;i<N;i++)
{
  //do something
}

Не существует более изящного способа написания цикла for на C. В сложных случаях обычно приходится писать уродливые вложенные циклы или задавать множество вспомогательных переменных (например, как i в показанном выше коде).

К счастью, в Python всё более удобно. В этом языке есть множество хитростей, позволяющих писать более изящные циклы, которые упрощают нашу жизнь. В Python вполне можно избежать вложенных циклов и вспомогательных переменных, и мы даже можем самостоятельно настраивать цикл for.

Эта статья познакомит вас с самыми полезными трюками по написанию циклов на Python. Надеюсь, она поможет вам ощутить красоту этого языка.
Читать дальше →

Автоматизация тестирования на Python. Шесть способов тестировать эффективно

Время на прочтение7 мин
Охват и читатели73K

Мы уже говорили об автоматизации тестирования, теперь пришло время познакомиться с шестью лучшими инструментами автоматизации тестирования на Python.

Есть хорошая новость – в стандартной библиотеке Python уже есть отличные инструменты для модульного тестирования. Вы можете очень долго строить надежную автоматизацию тестирования с помощью встроенных возможностей языка. Но добавить автоматизацию в стандартную базу кода Python очень просто, поскольку этот язык используется для различных задач, в том числе для создания самих инструментов автоматизации тестирования.

Вы можете настроить нужную степень и уровень автоматизации тестирования на Python, и создавать тесты в соответствии с растущей базой кода. 

Итак, начнем.

Читать далее

Нейродайджест: главное из области машинного обучения за май 2021

Время на прочтение6 мин
Охват и читатели4.6K

Управляемые складки одежды и морщины, фотореалистичные симуляции вождения, естественное освещение объектов при смене фона, китайский аналог DALL-E  и многое другое: встречайте подборку самых интересных исследований и нейросетевых моделей, которые появились в прошедшем месяце.      

Перейти к обзору

Пишем обёртку над SQLAlchemy Сore

Время на прочтение8 мин
Охват и читатели12K

Для асинхронного Python существует мало полноценных ORM, и им далеко до таких монстров-комбайнов, как DjangoOrm и SQLAlchemy.ORM. Бедность ORM-инструментария для асинхронного программирования заставила многих программистов отказаться от зачастую непонятной им работы с ORM и перейти к более прозрачному взаимодействию с БД. Решение в лоб — написание raw SQL, но в этом случае запросы не будут защищены от инъекций, а запросы, составляемые по бизнес логике с опциональными параметрами, превратятся в конкатенацию строк. Важно найти баланс между прозрачностью выполнения кода, скоростью его написания и читаемостью.

Ниже я предлагаю реализацию такого баланса c использованием SQLAlchemy Core.

Читать далее

Сам себе Гутенберг. Делаем многоязычные параллельные книги

Время на прочтение14 мин
Охват и читатели9.4K

Lingtrain parallel books article cover


В прошлый раз мы с вами научились делать параллельные книги и сделали русско-английский вариант отрывка романа Харпер Ли "Убить пересмешника". Сегодня мы сделаем следующий шаг и создадим полноценную многоязычную книгу на восьми языках.


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


Семь книг


Проделаем все на примере романа Булгакова "Мастер и Маргарита", потому что он очень популярен в мире и был переведен на множество языков. Я нашел его версии на английском и немецком (германские языки); белорусском, чешском и украинском (славянские языки); а также на венгерском и китайском языках. Все семь текстов мы выровняем с русским оригиналом, получим семь книг. Затем выровняем их между собой и получим возможность выбирать любые комбинации языков для своей книги в любом порядке. Полные версии книг можно будет скачать в формате pdf в конце статьи.


Начнем с пары венгерский-русский.

Читать дальше →

Декораторы Python: хватит это терпеть

Время на прочтение4 мин
Охват и читатели22K

Всем привет! В этой статье я расскажу об инструменте, разработанным мной, который изменяет работу декораторов в Python и делает их более «Питоничными».

Я не буду рассказывать про области применения декораторов. Есть множество статей на эту тему.

Для начала, давайте вспомним: что же такое декораторы в Пайтон.

Если совсем просто, то это удобный способ передать одну функцию в другую и получить третью. В этом определении нет ни одного слова правды, но мы вернёмся к этому позже.

Давайте разбираться!

Избавиться от боли