Hello World – Telegram
Hello World
1.68K subscribers
71 photos
6 videos
3 files
161 links
Be so good that you cannot be ignored. And then, go one step beyond.
Download Telegram
Вчера как обычно занимался нейросетями, настраивал модель в keras (кстати, очень удобная штука, советую). Тренировал модель на датасете картинок с математическими символами, взятого из какого-то китайского репозитория на гитхабе. Точность была порядка 95%, вроде бы. Архитектуру сети взял с одной статьи с архива, прикрепляю ниже картинку, кому интересно.

Дальнейший шаг – это научиться с помощью cv2 разбивать картинку с несколькими символами на отдельные картинки, ну а дальше распознавать и парсить их.

Например даем картинку с надписью 1+1, пропускаем через нашу программу и получаем ответ 2.

Интересно? Рассказать об этом подробнее?

#keras #cv2
Hello World pinned «​Вчера как обычно занимался нейросетями, настраивал модель в keras (кстати, очень удобная штука, советую). Тренировал модель на датасете картинок с математическими символами, взятого из какого-то китайского репозитория на гитхабе. Точность была порядка 95%…»
Всякие разности

Как вы знаете, мы с Адрианом бросили все силы на создание обучающих курсов, поставленных в противовес огромным компаниям, которые у нас зачастую покупают рекламу на каналах (не будем тыкать пальцами ни в кого).

Концепция проста: низкая стоимость + высокое качество. Вообще мы давно уже занимаемся как ботами, так и data science. И вот недавно мы решили провести еще один поток обучения по ботам (возможно последний, ибо из-за обилия говнокурсов спрос сильно упал).

Так вот, если вам интересна тема телеграм ботов, то отпишите в бота @python_academy_robot (не пугайтесь что он на лайвграм, у нас полно нормальных проектов, и мы ничего не скрываем). Все цены будут там.

P.S. По поводу нейронок, если кому интересно, залил небольшой код конволюционной нейросети на github. Задача классическая, распознавание цифр из датасета MNIST. Постараюсь написать статью (либо серию постов) в ближайшее время.
Что выведет следующий код?
Anonymous Quiz
39%
SyntaxError
13%
01234
22%
01234end
25%
0234end
Проверка на анаграммность

Проверить, являются ли строки анаграммами (например, в результате случайной перестановки букв) поможет класс Counter модуля collections.

Посмотреть код

#string #collections
Запрос пароля во время выполнения программы

Этот простой пакет позволяет запрашивать у пользователя его пароль, а также получать его имя (под которым он вошёл в систему).

Правда, при работе с паролями стоит знать о том, что не все системы поддерживают скрытие паролей. Python постарается вас об этом уведомить. Если это произойдёт – вы увидите соответствующее предупреждение в командной строке.

Посмотреть код

#tips
Загрузка модели в Keras

Библиотека Keras позволяет сохранять модель в такие форматы как YAML и json, однако гораздо удобнее (и нативнее, если можно так выразиться) сохранять модель в формат H5 (hdf5).

Данный формат позволяет сохранить:

📌 Веса модели
📌 Ее архитектуру
📌 loss и metrics

✏️ Для работы с этим форматом вам необходимо установить модуль h5py

После загрузки вы можете обращаться к model с помощью привычных команд.

Посмотреть код

#Keras #NN
Помните такой тупой мем: бесплатный wi-fi, но паролем является правильно посчитанный интеграл.

Навскидку, чему равен ответ?
Интеграл из предыдущего поста можно легко посчитать, если заметить что вклад первого слагаемого равен нулю (нечетная функция интегрируется в симметричных пределах). Остальное берется заменой x = 2*sin(φ).

Правильный ответ: π

Можно посчитать это численно, с помощью пакета sympy. Это библиотека для символьной математики. Для этого импортируем Symbol, integrate и sqrt.

Далее синтаксис очень сильно напоминает Wolfram Mathematica. Просто передаем в integrate функцию и кортеж с пределами.

Посмотреть код

#sympy
Нахождение близких соответствий в строках

Предположим, вы попали в ситуацию, когда вам понадобилось, задействуя концепцию наподобие расстояния Левенштейна, найти в списке слова, похожие на некую входную строку. Решить эту задачу можно с помощью built-in модуля difflib.

Данный метод ищет "наилучшие" возможные совпадения. Первый аргумент задаёт искомую строку, второй аргумент задаёт список, в котором выполняется поиск.

Также в метод можно передать необязательный аргумент n, который задаёт максимальное число возвращаемых совпадений.

Посмотреть код
Кэширование результатов вызова функций с помощью декоратора

Доводилось ли вам писать функции, которые выполняли какие-нибудь длительные операции чтения-записи, или достаточно медленные рекурсивные вычисления?

Думали ли вы при этом о том, что таким функциям не повредило бы кэширование результатов? Кэшировать результаты вызова функции можно с помощью декоратора lru_cache из модуля functools.

В этом примере мы выполняем GET-запросы, результаты которых кэшируются (кэшировано может быть до 32 результатов). Тут можно увидеть и то, что мы получаем сведения о кэше функции, воспользовавшись методом cache_info.

Посмотреть код

#functools
Нахождение часто встречающихся элементов в списке

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

📌 Но такой подход – это конечно пустая трата времени. Решать подобные задачи можно с помощью класса Counter из модуля collections.

✏️ Counter по сути основан на словаре, хранящем соответствия элементов и количества их вхождений в список. Поэтому соответствующий объект можно использовать как обычный dict.

Посмотреть код

#collections
Очистка входных строковых данных

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

📌 Иногда данные можно очистить с помощью регулярного выражения.

📌 Но в случаях, когда задача усложняется, можно применить более удачный способ её решения. Здесь пробельные символы "\n" и "\t" заменяются на обычные пробелы, а символ "\r" удаляется из строки полностью.

✏️ Это – простой пример, но мы можем его расширить, создавая таблицы переназначения символов с использованием пакета unicodedata и его функции combining().

Такой подход позволяет убирать из строк всё то, что там не нужно.

Посмотреть код

#tips
Что будет выведено в функции print?
Выберите правильный ответ👇
comp3321_red.pdf
18.5 MB
курс от АНБ по Python

В прикрепленном файле вы найдете немного отредактированную четырехсотстраничную распечатку учебного курса COMP 3321 по Python, который преподается в АНБ.

Данный курс содержит краткое введение в Python от его создателя Гвидо ван Россума и объясняет, для чего этот язык подходит лучше всего, например, для автоматизации задач, создания веб-приложений или проведения углубленных математических исследований.
Объявление нескольких конструкторов в классе

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

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

📌 Конечно, вместо использования методов класса, можно поместить всю логику альтернативных конструкторов в __init__ и решить задачу с использованием *args**kwargs и множества выражений if.

✏️ В результате может получиться рабочий код, но этот код будет тяжело читать и поддерживать. Тут можно порекомендовать поместить минимум логики в __init__ и выполнить все операции в отдельных методах/конструкторах.

✏️ При таком подходе в нашем распоряжении окажется чистый код, с которым удобно будет работать и автору этого кода, и тому, кто этим кодом будет пользоваться.

Посмотреть код