Обновить
1024K+

Python *

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

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

Капча, частный случай: рвём нейронную сеть тридцатью строками кода

Время на прочтение4 мин
Охват и читатели22K
   Уже не помню, как я наткнулся на статью habr.com/ru/post/464337, но она запала мне в мозг и не давала покоя вплоть до минувшего дня. Несколько раз я пытался понять происходящее, пару раз пытался заставить это работать, но безрезультатно: я совершенно ничего не понимаю в нейронных сетях и даже программирую не как настоящий программист.
счастливая капча

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

Рекуррентные нейронные сети (RNN) с Keras

Время на прочтение11 мин
Охват и читатели109K
Перевод руководства по рекуррентным нейросетям с сайта Tensorflow.org. В материале рассматриваются как встроенные возможности Keras/Tensorflow 2.0 по быстрому построению сеток, так и возможности кастомизации слоев и ячеек. Также рассматриваются случаи и ограничения использования ядра CuDNN позволяющего ускорить процесс обучения нейросети.


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

pyqtdeploy, или упаковываем Python-программу в exe'шник… the hard way

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

КДПВ


Наверняка, каждый, кто хоть раз писал что-то на Python, задумывался о том, как распространять свою программу (или, пусть даже, простой скрипт) без лишней головной боли: без необходимости устанавливать сам интерпретатор, различные зависимости, кроссплатформенно, чтобы одним файлом-exe'шником (на крайний случай, архивом) и минимально возможного размера.


Для этой цели существует немало инструментов: PyInstaller, cx_Freeze, py2exe, py2app, Nuitka и многие другие… Но что, если вы используете в своей программе PyQt? Несмотря на то, что многие (если не все) из выше перечисленных инструментов умеют упаковывать программы, использующие PyQt, существует другой инструмент от разработчиков самого PyQt под названием pyqtdeploy. К моему несчастью, я не смог найти ни одного вменяемого гайда по симу чуду, ни на русском, ни на английском. На хабре и вовсе, если верить поиску, есть всего одно упоминание, и то — в комментариях (из него я и узнал про эту утилиту). К сожалению, официальная документация написана довольно поверхностно: не указан ряд опций, которые можно использовать во время сборки, для выяснения которых мне пришлось лезть в исходники, не описан ряд тонкостей, с которыми мне пришлось столкнуться.


Данная статья не претендует на всеобъемлющее описание pyqtdeploy и работы с ним, но, в конце концов, всегда приятно иметь все в одном месте, не так ли?

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

Подборка @pythonetc, январь 2020

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


Новая подборка советов про Python и программирование из моего авторского канала @pythonetc.

Предыдущие публикации


Порядок блоков except имеет значение: если исключение может быть поймано несколькими блоками, то его поймает верхний блок. Этот код не будет работать так, как задумано:
Читать дальше →

Разработка интерактивной карты распространения коронавируса типа 2019-nCoV на Python

Время на прочтение7 мин
Охват и читатели18K
Коронавирус типа 2019-nCoV, после вспышки заболевания в китайском городе Ухань, стремительно распространяется по миру. На момент написания оригинальной статьи (30 января 2020 года) сообщалось о более чем 9000 заражённых и о 213 умерших, на сегодня (10 февраля 2020 года) сообщается уже о 40570 зараженных, 910 человек умерло. Случаи заражения коронавирусом выявлены во Франции, в Австралии, в России, в Японии, в Сингапуре, в Малайзии, в Германии, в Италии, в Шри-Ланке, в Камбодже, в Непале и во многих других странах. Никто не знает о том, когда вирус будет остановлен. Пока же число подтверждённых случаев коронавируса лишь растёт.

Автор статьи, перевод которой мы сегодня публикуем, хочет рассказать о том, как, с использованием Python, создать простое приложение для отслеживания распространения коронавируса. После завершения работы над этим приложением в распоряжении читателя окажется HTML-страница, которая выводит карту распространения вируса и ползунок, который позволяет выбирать дату, по состоянию на которую данные выводятся на карту.


Интерактивная карта распространения коронавируса типа 2019-nCoV

Здесь будут использованы такие технологии, как Python 3.7, Pandas, Plotly 4.1.0 и Jupyter Notebook.
Читать дальше →

Подборка статей о машинном обучении: кейсы, гайды и исследования за январь 2020

Время на прочтение5 мин
Охват и читатели10K
Исследовательская работа в области машинного обучения постепенно покидает пределы университетских лабораторий и из научной дисциплины становится прикладной. Тем не менее, все еще сложно находить актуальные статьи, которые написаны на понятном языке и без миллиарда сносок.

Этот пост содержит список англоязычных материалов за январь, которые написаны без лишнего академизма. В них вы найдете примеры кода и ссылки на непустые репозитории. Упомянутые технологии лежат в открытом доступе и не требуют сверхмощного железа для тестирования.
Читать дальше →

Визуализация линий напряженности и движений электростатических зарядов, симулирование движения планет солнечной системы

Время на прочтение3 мин
Охват и читатели21K
Привет, сегодня я хочу вам предложить наглядное пособие по моделированию некоторых физических процессов и показать как получить красивые изображения и анимации. Осторожно много картинок.

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

Сертификация по программе IBM Data Science Professional Certificate

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

Статья является кратким обзором о сертификации по программе IBM Data Science Professional Certificate.


Будучи новичком в Python, мне пришлось столкнуться с реализацией задач:


  • Загрузка и парсинг HTML таблиц
  • Очистка загруженных данных
  • Поиск географических координат по адресу объекта
  • Загрузка и обработка GEOJSON
  • Построение интерактивных тепловых карт (heat map)
  • Построение интерактивных фоновых картограмм (choropleth map)
  • Преобразование географических координат между сферической WGS84 и картезианский системой координат UTM
  • Представление пространственных географических объектов в виде гексагональная сетки окружностей
  • Поиск географических объектов, расположенных на определенном расстоянии от точки
  • Привязка географических объектов к полигонам сложной формы на поверхности
  • Описательные статистический анализ
  • Анализ категорийных переменных и визуализация результатов
  • Корреляционный анализ и визуализация результатов
  • Сегментация с использованием k-Mean кластеризации и elbow метода
  • Анализ и визуализация кластеров
Читать дальше →

Материалы NLP курса от DeepPavlov

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

В этой статье вы найдете материалы очных курсов «Deep Learning in NLP», которые запускались командой DeepPavlov в 2018-2019 годах и которые являлись частичной адаптацией Stanford NLP course — cs224n. Статья будет полезна любым специалистам, погружающимися в обработку текста с помощью машинного обучения. Благодарю физтехов, разрабатывающих открытую библиотеку для разговорного искусственного интеллекта в МФТИ, и Moryshka за разрешение осветить эту тему на Хабре в нашем ods-блоге.


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

О реализации библиотеки для глубокого обучения на Python

Время на прочтение10 мин
Охват и читатели14K
Технологии глубокого обучения за короткий срок прошли большой путь развития — от простых нейронных сетей до достаточно сложных архитектур. Для поддержки быстрого распространения этих технологий были разработаны различные библиотеки и платформы глубокого обучения. Одна из основных целей подобных библиотек заключается в том, чтобы предоставить разработчикам простые интерфейсы, позволяющие создавать и обучать нейросетевые модели. Подобные библиотеки позволяют своим пользователям обращать больше внимания на решаемые задачи, а не на тонкости реализации моделей. Для этого может понадобиться скрывать реализацию базовых механизмов за несколькими уровнями абстракции. А это, в свою очередь усложняет понимание базовых принципов, на которых основаны библиотеки глубокого обучения.



Статья, перевод которой мы публикуем, нацелена на разбор особенностей устройства низкоуровневых строительных блоков библиотек глубокого обучения. Сначала мы кратко поговорим о сущности глубокого обучения. Это позволит нам понять функциональные требования к соответствующему программному обеспечению. Затем мы рассмотрим разработку простой, но работающей библиотеки глубокого обучения на Python с использованием NumPy. Эта библиотека способна обеспечить сквозное обучение простых нейросетевых моделей. По ходу дела мы поговорим о различных компонентах фреймворков глубокого обучения. Библиотека, которую мы будем рассматривать, совсем невелика, меньше 100 строк кода. А это значит, что с ней будет достаточно просто разобраться. Полный код проекта, которым мы будем заниматься, можно найти здесь.
Читать дальше →

Чистое зло Python

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

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


Сегодня я расскажу о страшных чудовищах, которые, возможно, уже обжились в вашем коде и готовы устанавливать свои правила. Здесь нужен герой, который защитит безмятежный мир от злобных тварей. И именно вы станете тем, кто сразится с ними!



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

Реализация алгоритмической теории игр на Python с Nashpy

Время на прочтение4 мин
Охват и читатели14K
Теория игр — это метод изучения стратегических ситуаций, когда результаты зависят не только от ваших действий, но и от того, что предпримут другие.

Что такое стратегическая ситуация? Вспомним типы рыночных структур: есть совершенная конкуренция, когда все компании являются ценообразующими, то есть им не нужно беспокоиться о стратегии формирования цены, и есть монополия, когда на рынке только одна компания, которая устанавливает свои цены. Так вот: все, что между совершенной конкуренцией и монополией, является стратегической ситуацией.

Алгоритмическая теория игр находится на стыке теории игр и компьютерной науки и направлена на изучение и создание алгоритмов для стратегий.



Под катом короткий рассказ про то, как можно задействовать теорию игр на Python при помощи библиотеки Nashpy.

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

Обучение и оценка модели с Keras

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


Это руководство охватывает обучение, оценку и прогнозирование (выводы) моделей в TensorFlow 2.0 в двух общих ситуациях:

  • При использовании встроенных API для обучения и валидации (таких как model.fit(), model.evaluate(), model.predict()). Этому посвящен раздел «Использование встроенных циклов обучения и оценки»
  • При написании кастомных циклов с нуля с использованием eager execution и объекта GradientTape. Эти вопросы рассматриваются в разделе «Написание собственных циклов обучения и оценки с нуля».

В целом, независимо от того, используете ли вы встроенные циклы или пишете свои собственные, обучение и оценка моделей работает строго одинаково для всех видов моделей Keras: Sequential моделей, созданных с помощью Functional API, и написанных с нуля с использованием субклассирования.
Читать дальше →

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

Python для тестировщика: как маленькие скрипты c pandas помогают в тестировании больших наборов данных

Время на прочтение13 мин
Охват и читатели22K
Я работаю тестировщиком на проекте, суть которого состоит в сборе и хранении различных данных и формировании на их основе разных отчетов и файлов-выгрузок. При формировании таких отчетов учитывается большое количество условий для отбора данных и поэтому при тестировании приходится много работать с SQL-запросами в БД. Но для проверки правильности отбора данных и поиска лишних/пропавших данных этого зачастую не хваетает, поэтому пришлось искать дополнительные инструменты для этого.

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

Alpine собирает Docker билды под Python в 50 раз медленней, а образы в 2 раза тяжелей

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


Alpine Linux — часто рекомендованный как базовый образ для Docker`а. Вам говорят, что использование Alpine сделает ваши билды меньше, а процесс сборки быстрей.

Но если вы используете Alpine Linux для Python приложений, то он:

  • Делает ваши билды намного медленней
  • Делает ваши образы больше
  • Тратит ваше время
  • И в итоге может стать причиной ошибок в рантайме
Читать дальше →

Когда код становится legacy и как с ним жить

Время на прочтение17 мин
Охват и читатели21K
Много лет назад, я пришел в один legacy-проект, который разрабатывал Владимир Филонов (pyhoster). Так я и познакомился с одним из организаторов MoscowPython, любителем копаться во внутренностях библиотек, а потом рассказывать об этом. Иронично, что теперь он собирается рассказывать, как выжить, если вам достался legacy. Это еще раз доказывает, что legacy порождают даже те, кто потом учит, как с этим жить. Мне очень хочется расспросить Владимира о том, что такое legacy, как им поменьше зарастать, как бороться, когда уже по уши в legacy, а когда всё бросать и писать заново (спойлер: никогда).

Но сперва посмотрите ролик, чтобы прочувствовать всю боль погружения в legacy…

Как я 1000 дней пользовался OpenHAB, а затем перешел на Home Assistant

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

Однажды в 2016 году мне потребовалось настроить удаленный сбор показаний счетчиков в квартире. К текущему моменту (январь 2020 года) там внедрена комплексная домашняя автоматизация с возможностью перекрытия воды и полного удаленного обесточивания (и обратного включения) электроэнергии.



В статье расскажу об опыте управления OpenHAB 1.х и 2.х и Home Assistant, а также приведу свои конфигурации.

OpenHAB vs Home Assistant

Простое руководство по дистилляции BERT

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

Если вы интересуетесь машинным обучением, то наверняка слышали про BERT и трансформеры.


BERT — это языковая модель от Google, показавшая state-of-the-art результаты с большим отрывом на целом ряде задач. BERT, и вообще трансформеры, стали совершенно новым шагом развития алгоритмов обработки естественного языка (NLP). Статью о них и «турнирную таблицу» по разным бенчмаркам можно найти на сайте Papers With Code.


С BERT есть одна проблема: её проблематично использовать в промышленных системах. BERT-base содержит 110М параметров, BERT-large — 340М. Из-за такого большого числа параметров эту модель сложно загружать на устройства с ограниченными ресурсами, например мобильные телефоны. К тому же, большое время инференса делает эту модель непригодной там, где скорость ответа критична. Поэтому поиск путей ускорения BERT является очень горячей темой.


Нам в Авито часто приходится решать задачи текстовой классификации. Это типичная задача прикладного машинного обучения, которая хорошо изучена. Но всегда есть соблазн попробовать что-то новое. Эта статья родилась из попытки применить BERT в повседневных задачах машинного обучения. В ней я покажу, как можно значительно улучшить качество существующей модели с помощью BERT, не добавляя новых данных и не усложняя модель.


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

Как научить телефон видеть красоту

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

Недавно я читал книгу о математике и о красоте людей и задумался о том, что еще десятилетие назад представление о том, как понять, что такое красота человека были достаточно примитивными. Рассуждения о том, какое лицо считается красивым с точки зрения математики сводились к тому, что оно должно быть симметричным. Также со времен эпохи возрождения были попытки описать красивые лица при помощи соотношений между расстояниями в каких-то точках на лице и показать, например, что у красивых лиц какое-то отношение близко к золотому сечению. Подобные идеи о расположении точек сейчас используются как один из способов идентификации лиц (face landmarks search). Однако как показывает опыт, если не ограничивать набор признаков положением специфичных точек на лице, можно добиться лучших результатов в целом ряде задач, включая определение возраста, пола или даже сексуальной ориентации. Уже тут видно, что острым может стоять вопрос этики публикации результатов таких исследований.
Читать дальше →

Питонистический подход к циклам for: range() и enumerate()

Время на прочтение3 мин
Охват и читатели69K
Автор заметки, перевод которой мы сегодня публикуем, хочет рассказать о некоторых особенностях использования циклов for в Python.



Цикл for — это один из краеугольных камней программирования. С этими циклами будущие программисты знакомятся в самом начале учёбы и, после первого знакомства, пользуются ими постоянно.
Читать дальше →