Pull to refresh
60
0
Андрей @xaoc80

Разработчик программного обеспечения

Send message

Оптимизация гиперпараметров за 5 секунд?

Level of difficultyMedium
Reading time12 min
Views4.1K

Пока люди с самыми малыми вычислительными машинами в пустую тратят время на перебор гиперпараметров внутри библиотеки Scikit-learn – настоящие гении тайм-менеджмента выбирают TPE и Optuna. 

В этой статье мы рассмотрим самые популярные методы оптимизации Grid.Search и Random.Search, принципы Байесовской/вероятностной оптимизации, а также TPE в Optuna. В конце прописали небольшой словарик с функциями, атрибутами и объектами фреймворка, а также привели наглядный пример использования. 

Читать далее
Total votes 7: ↑5.5 and ↓1.5+4
Comments6

Небольшая щепотка ультразвуковых чудес

Level of difficultyMedium
Reading time9 min
Views9.2K
Картинка Freepik

Несмотря на свою практически неслышимость и незримость, ультразвук имеет множество применений в современной жизни. В связи с этим мы и рассмотрим некоторые весьма любопытные его реализации, вдвойне интересные ещё с той точки зрения, что они содержат полный набор исходников проектов, что позволяет любому желающему испытать свои силы в реализации описанного. Итак…
Читать дальше →
Total votes 67: ↑64.5 and ↓2.5+62
Comments23

Энциклопедия контроллеров и обучающий проект (на Хабре)

Level of difficultyEasy
Reading time7 min
Views13K


Я давно занимаюсь микроконтроллерной тематикой и делюсь своими изысканиями (частью изысканий) в блоге на Хабре. Делаю я это довольно давно и количество статей уже перевалило за сотню, и, в полном соответствии с воззрениями (старины) Гегеля, количество явно переросло в качество.

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

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

Итак…
Читать дальше →
Total votes 59: ↑59.5 and ↓-0.5+60
Comments11

Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному

Level of difficultyMedium
Reading time45 min
Views134K

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

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

Читать далее
Total votes 506: ↑498 and ↓8+490
Comments351

FinRL: Библиотека глубокого обучения с подкреплением для автоматизированной торговли акциями

Level of difficultyMedium
Reading time12 min
Views8.1K

Глубокое обучение с подкреплением (Deep Reinforcement Learning - DRL) является эффективным подходом в количественных финансах. Однако обучение торгового агента DRL, который бы решал, где торговать, по какой цене и в каком количестве, сопряжено с ошибками, а так же со сложной разработкой и отладкой.

Библиотека FinRL облегчает новичкам знакомство с количественными финансами и разработку собственных стратегий торговли акциями. Она позволяет пользователям оптимизировать свои собственные разработки и легко сравнивать их с существующими схемами. В рамках FinRL виртуальные среды настраиваются с помощью наборов данных фондового рынка, торговые агенты обучаются с помощью нейронных сетей, а функционал обратного тестирования (backtesting) анализирует эффективность торговли. Кроме того, в систему включены важные торговые ограничения, такие как стоимость сделки, ликвидность рынка и степень неприятия риска инвестором. FinRL отличается полнотой, хорошим практическим руководством и воспроизводимостью, что упрощает работу новичкам.

Читать далее
Total votes 23: ↑22 and ↓1+21
Comments19

На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов

Level of difficultyMedium
Reading time23 min
Views17K
image

Если сейчас приехать в пункт приема металлолома, то можно обнаружить просто огромные кучи различных телефонов и прочих электронных «отходов», которые стоят под открытым небом и ждут, когда придёт их черёд окончательного разложения. Однако при ближайшем рассмотрении выясняется, что многие девайсы оказываются полностью рабочими даже после недельного лежания под палящим солнцем и проливными дождями, а сдали их в чермет по причинам «не нужен, надоел, купил новый» и т. п. Я не считаю это правильным, ведь даже в простые кнопочные звонилки имеется возможность вдохнуть новую жизнь, если знать один интересный, но малоизвестный факт: для них можно писать нативные приложения на C и использовать железо телефона в своих целях. А это, на минуточку, как минимум: дисплей с подсветкой, вибромотор, динамик, клавиатура и GSM-радиомодуль с возможностью выхода в сеть. Сегодня мы с вами: узнаем, на каких аппаратных платформах работают китайские телефоны, какие существуют программные платформы и где взять для них SDK, а в практической части мы напишем 2D-игру с нуля, которая будет работать на многих китайских кнопочниках. Интересно? Тогда жду вас под катом!
Читать дальше →
Total votes 119: ↑117 and ↓2+115
Comments86

Создаем свою STL-совместимую реализацию std::allocator с лучшей производительностью

Reading time11 min
Views4.3K

Реализация защиты от сбоев из-за фрагментации кучи и повышение скорости выполнения с помощью STL-альтернативы std::allocator, работающей с блоками памяти фиксированного размера.

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

Читать далее
Total votes 18: ↑14 and ↓4+10
Comments11

Информация об информации. Энтропия Шеннона, демон Максвелла и предел Ландауэра

Level of difficultyMedium
Reading time24 min
Views19K

Информация – одно из самых неоднозначных и неопределённых понятий в науке и философии. Для гуманитария это любые сведения, которые можно запомнить и передать в устной или письменной форме. Для математика это абстрактная сущность, сохраняющаяся при вычислительном изоморфизме. Для физика-теоретика это набор квантовых чисел, характеризующих состояние элементарной частицы. Для программиста это цифровые данные, которые можно представить в двоичном коде и измерить в битах. Для философа-материалиста это отражение многообразия окружающего мира с помощью знаков и сигналов. Для философа-идеалиста это нематериальная, неизмеримая и нелокальная сущность, что-то связанное с духом или сознанием. Для эзотериков это некая метафизическая субстанция или информационное поле. Что же такое информация на самом деле? В данной лекции я покажу, что информация – физическая, объективная, измеряемая величина, в которой нет ничего субъективного и мистического. Заодно мы разберёмся, что такое энтропия по Шеннону, насколько избыточен естественный язык, в чём заключается принцип Ландауэра и обладает ли информация массой.

Читать далее
Total votes 47: ↑45 and ↓2+43
Comments166

Поговорим об оптимизирующих компиляторах. Сказ восьмой: размотка циклов

Level of difficultyMedium
Reading time12 min
Views8.7K

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

Но есть оптимизации, применение которых имеет как плюсы, так и минусы. Выиграв в одном месте, мы можем получить отрицательные эффекты в другом. Например, сэкономив на количестве проверок, мы можем раздуть общий объём кода и поломать микрооптимизации. Каноничным примером такой оптимизации, решение вопроса об использовании которой больше похоже на искусство, чем на науку, является размотка циклов (Loop Unrolling), о которой мы сегодня поговорим. В статье я попробую осветить как можно больше (хотя, наверное, и не все) соображения о том, почему эту оптимизацию может быть нужно или не нужно применять.

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

Читать далее
Total votes 55: ↑55 and ↓0+55
Comments6

Как оптимизировать код на С для x86-процессоров: подсистема кэша и памяти, инструкции AVX-512

Level of difficultyMedium
Reading time12 min
Views8.9K

Меня зовут Андрей Бакшаев, я ведущий инженер-программист в YADRO. Моя команда занимается разработкой и оптимизацией математических библиотек под архитектуру x86. До этого я 15 лет работал в Intel. Значительная часть моих задач заключалась в том, чтобы реализовывать некоторые алгоритмы обработки изображений и сигналов в довольно известной математической библиотеке IPP, максимально эффективно используя возможности процессоров. Я также исследовал производительность этих алгоритмов в процессорах на ранней стадии проектирования. 

В статье я поделюсь своим опытом оптимизации низкоуровневого кода на языке C. Рассмотрим подсистему кэша и памяти процессоров и новые инструкции AVX-512. Разберем пример ускорения копирования байтового массива данных и посмотрим, как векторизованный код позволяет сократить время работы широко используемого алгоритма замены байтов по таблице с 619 до 34 мс, то есть примерно в 18 раз. 

Читать далее
Total votes 54: ↑51 and ↓3+48
Comments23

Простой комплект для изучения сантиметровых радиоволн (СВЧ)

Level of difficultyEasy
Reading time6 min
Views14K

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

Читать далее
Total votes 125: ↑124 and ↓1+123
Comments21

C++ Дайджест №2 (21 августа 2023 – 3 сентября 2023)

Level of difficultyEasy
Reading time4 min
Views7.2K

Привет, Хабр! Сегодня я хочу вам представить подборку интересных новостей и материалов из мира C++ за последние две недели.

Приятного чтения!

Читать далее
Total votes 28: ↑27 and ↓1+26
Comments0

Почти одноплатник за 400 рублей: как применить дешёвый ТВ-стик 10-летней давности?

Level of difficultyEasy
Reading time7 min
Views38K
image

Официальная цена на последнюю модель Raspberry Pi составляет около 40$ за штучку. Однако купить её за такую цену невозможно, перекупы накручивают огромные ценники за одноплатники, основным преимуществом которых должна быть цена. И даже альтернативы от китайских друзей в виде Orange Pi или Banana Pi стоят как минимум 3-4 тысячи рублей, что по карману может быть не каждому. Но сейчас на барахолках можно найти старые и дешевые ТВ-стики по совершенно смешным ценам: 2-4$ за штучку, иногда даже с пультом и всеми кабелями. Почему бы не попробовать использовать их в качестве доступных одноплатников? Предлагаю попробовать.
Читать дальше →
Total votes 96: ↑92 and ↓4+88
Comments93

Теорема Байеса для чайников

Level of difficultyEasy
Reading time5 min
Views51K

Теорема (формула) Байеса позволяет выяснить вероятность события при условии, что произошло связанное с ним другое событие.

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

Читать далее
Total votes 24: ↑23 and ↓1+22
Comments35

Описательная статистика перформанс-распределений

Reading time40 min
Views13K

Нужна ли разработчику математика? Если анализировать замеры производительности, то матстатистика понадобится. Но оказывается, о ней полезно знать не совсем то, что в учебниках. А что тогда?

Андрей Акиньшин @DreamWalker поговорил об этом в докладе на нашей конференции Heisenbug. И теперь, пока мы готовим следующий Heisenbug (где тоже будут доклады о производительности), решили опубликовать текстовую версию его выступления (а для тех, кому удобнее другие форматы, прикрепляем видеозапись и слайды). Предупреждаем: много букв, цифр, графиков и формул!

Читать далее
Total votes 51: ↑51 and ↓0+51
Comments2

Неожиданная эффективность условных вероятностей

Reading time11 min
Views8K

В последнее время я решил заняться задачами по теории вероятностей, потому что мне кажется, получение знаний в этой сфере принесёт большую пользу. Я нашёл ключ, часто использующийся для решения многих из них: накладываем условие на промежуточное состояние, а затем отдельно вычисляем значение этого промежуточного состояния. Это превращает очень сложные задачи в такие, где решение практически очевидно. [Однако в таком случае мы иногда обмениваем эффективность на простоту.]

Такой подход был полезен для решения задачи о днях рождения в очереди, и в статье я приведу ещё три примера, в которых это проявляется. Если задача покажется вам неинтересной, перейдите к следующей, они все разные.
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments9

Как добавить в датасет Microsoft COCO свои классы и обучить модель YOLOX

Reading time9 min
Views4.9K

В интернете достаточно статей на тему «как обучить custom dataset на yolo».
Что скрывается за этими словами?

Ничего сверхестественного. Собираем или находим где-нибудь датасет, размечаем его, создаем файл аннотаций к картинкам. Далее берем одну из предобученных моделей yolo, обучаем эту модель на собственном датасете и далее наслаждаемся результатом.

Есть конечно, свои нюансы от yolo к yolo (которые уже определяются семействами в своих версиях, например, той же yolov5 порядка десяти вариантов моделей), но, в целом, порядок действий такой.

Все так. Однако модель, обученная на собственном датасете, будет определять только те классы, которые в нее заложили. Например, только дым и огонь.
Читать дальше →
Total votes 1: ↑1 and ↓0+1
Comments3

Подборка полезных сервисов с применением нейронных сетей

Reading time4 min
Views16K

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

Ознакомиться
Total votes 32: ↑31 and ↓1+30
Comments9

Зоопарк ML-моделей или лучший справочник на Хабре

Reading time4 min
Views5.4K

Привет, Хабр!

Меня зовут Ирина, я работаю ML инженером в Brand Analytics. Моя работа тесно связана с NLP, ведь мы ежедневно получаем огромное количество текстовых данных со всего интернета. Сегодня я хочу поговорить о теме, которая беспокоила меня еще с тех времен, когда я только начала изучать SOTA-решения в задачах обработки естественного языка.

Читать далее
Total votes 16: ↑16 and ↓0+16
Comments5

Почему аспирантура — зло

Reading time5 min
Views95K

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

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

Читать далее
Total votes 237: ↑216 and ↓21+195
Comments481

Information

Rating
4,362-nd
Location
Россия
Date of birth
Registered
Activity