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
Квантовые нейросети

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

Говоря о квантовой нейронной сети вводят понятие стохастического нейрона. Функция активации теперь рассматривается с вероятностной точки зрения.

Такой нейрон будет давать 1 с вероятностью, определенной функцией активации P(v) и 0 с вероятностью 1 - P(v).

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

А вот аналогичный квантовый однослойный перцептрон уже может решить эту задачу.

Не говоря уже о том, что ближайший "органический" аналог подобной квантовой нейросети это... наш мозг.

#NN
Вывод значения по умолчанию для отсутствующего ключа словаря

При обращении к несуществующему ключу словаря Python выбрасывает исключение. Можно этого избежать, например вызывая метод get. В данном случае метод выдаст None (по умолчанию) либо заданное значение аргумента.

>>> d = {'a':1, 'b':2}
>>> d.get('c'))
None
>>> d.get('c', 3)
3

При создании собственного типа данных на основе словарей обратите внимание на метод __missing__ для возвращения аргумента при отсутствии ключа:

class MyDict(dict):
def __missing__(self, key):
return key
...
>>> D = MyDict(a=1, b=2)
>>> D
{'a': 1, 'b': 2}
>>> D['a']
1
>>> D['c']
c
Вчера как обычно занимался нейросетями, настраивал модель в 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?
Выберите правильный ответ👇