Как стать автором
Обновить
0
0

Пользователь

Отправить сообщение

Как на Azure RTOS сделать Wi-Fi маршрутизатор для IoT

Время на прочтение6 мин
Количество просмотров3.4K

IoT маршрутизатор нужен для сбора и передачи данных в облака от различных проводных локальных шин (CAN, RS485, USB …) и беспроводных локальных сетей (Bluetooth, LoRa …).

Используя Azure RTOS сделать свой маршрутизатор достаточно просто. Нужно только правильно выбрать пару ингредиентов: Wi-Fi модуль и универсальный, быстрый, защищённый, экономичный микроконтроллер с открытой архитектурой.

Читать далее
Всего голосов 5: ↑3 и ↓2+1
Комментарии4

Импорт фотографий из командной строки Linux

Время на прочтение8 мин
Количество просмотров5.7K

Как просто и быстро импортировать фотографии в альбом и отсортировать по времени съемки.

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии16

Уроки компьютерного зрения. Оглавление

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров28K

Уроки компьютерного зрения на Python + OpenCV с самых азов. Часть 1.

Уроки компьютерного зрения на Python + OpenCV с самых азов. Часть 2.

Уроки компьютерного зрения на Python + OpenCV с самых азов. Часть 3.

Уроки компьютерного зрения на Python + OpenCV с самых азов. Часть 4.

Уроки компьютерного зрения на Python + OpenCV с самых азов. Часть 5.

Уроки компьютерного зрения на Python + OpenCV с самых азов. Часть 6.

Уроки компьютерного зрения на Python + OpenCV с самых азов. Часть 7.

Уроки компьютерного зрения на Python + OpenCV с самых азов. Часть 8.

Читать далее
Всего голосов 18: ↑16 и ↓2+14
Комментарии4

Как я нейроны паял

Время на прочтение7 мин
Количество просмотров8.4K

Здравствуйте. Наверное, многие из вас слышали об искуcственном интеллекте и очевидно что это — важная тема, которая изменяет сегодня нашу жизнь. Над созданием ИИ работает множество учёных. На данный момент существуют два фундаментальных подхода: нейробиология и нейросети. Лично я считаю нейробиологию более перспективной, но менее развитой т.к. о том, как именно работают нейроны мы знаем сегодня всё ещё очень мало. Нейросети являются наиболее развитым подходом, который, однако фактически достиг пределов развития т.к. для улучшения результатов требуются всё большие и большие вычислительные ресурсы. Кроме того, его отношение к настоящим нейронным сетям и нейронам весьма опосредованное и представляет собой всего лишь приблизительную математическую модель.

Подойдём к вопросу иначе: если нейрон - это электрохимическая структура, то можем ли мы попытаться воспроизвести его химическую активность с помощью электронных компонентов? Другими словами, можем ли мы составить электрическую цепь аналогичную нейрону?

Читать далее
Всего голосов 20: ↑15 и ↓5+10
Комментарии17

Точные и быстрые вычисления для чисел с плавающей точкой на примере функции синуса. Часть 2: libm

Время на прочтение5 мин
Количество просмотров4.6K
Продолжаю цикл статей по работе с плавающей точкой. В первой статье я дал небольшое математическое введение и показал самый простой и очевидный способ вычисления синуса с примерами программ с разными «подводными камнями». Сегодня статья будет немного другая по стилю. Здесь не будет практики, зато мы копнём глубже математику и залезем в святая-святых — код стандартной библиотеки. Так же я дам ответ на вопрос в конце первой статьи. Итак, поехали.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии39

Делаем часы из электронной книжки PRS-505

Время на прочтение6 мин
Количество просмотров10K


Удивительно, но старинная электронная книга Sony prs-505 является очень классным конструктором всевозможных самоделок. В очередной раз взял эту книжку, чтобы сделать себе “бумажные” часы. Мне нравится это решение тем, что цифры получаются большие и яркие, при этом они не светятся в темноте и не мешают спать. Идея часов на электронной бумаге совершенно не новая, но мне просто захотелось снова поиграться с этой классной электронной книгой. В результате получился этакий проект выходного дня, потому что могу. Как обычно, собрал все возможные грабли и ошибки. Свой тернистый путь описал в этой статье.
Читать дальше →
Всего голосов 47: ↑46 и ↓1+45
Комментарии17

ConcurrenCpp — The C++ concurrency library

Время на прочтение31 мин
Количество просмотров5K

Repository


concurrencpp allows applications to write asynchronous code easily and safely by using executors and coroutines.


By using concurrencpp applications can break down big procedures that need to be processed asynchronously into smaller tasks that run concurrently and work in a co-operative manner to achieve the wanted result.


concurrencpp also allows applications to write parallel algorithms more easily by using parallel coroutines.


concurrencpp main advantages are:


  • Being able to write non-blocking, asynchronous code easily by using the C++20 coroutines and the co_await keyword.
  • Being able to write modern concurrent code without having to rely on low-level concurrency primitives like locks and condition variables.
  • The concurrency runtime manages all low-level resources such as threads automatically.
  • Reducing the possibility of race conditions, data races and deadlocks by using high-level objects with built-in synchronization.
  • concurrencpp provides various types of commonly used executors with a complete coroutine integration.
  • Applications can extend the library by using their own provided executors.
  • Applications automatically scale-up to use all hardware processors (cores).
Read more →
Рейтинг0
Комментарии0

Быстрая медианная фильтрация с использованием AVX-512

Время на прочтение11 мин
Количество просмотров7K

Недавно Боб Стигалл сделал в конференции CppCon 2020 доклад под названием «Adventures in SIMD-thinking”, где он среди прочего рассказывал о своем опыте использования AVX512 для медианной фильтрации (с окном 7). Этот доклад вызвал у меня двоякие чувства: с одной стороны, прикольно сделано, и заявлено почти 20-кратное ускорение по сравнению с «тупейшей» реализацией через STL; с другой стороны, за один проход алгоритма из 16 входных семплов у него получалось всего 2 выходных, хотя входных данных хватало на 10, да и некоторые детали реализации вызвали желание попытаться их улучшить. Я подумал-подумал, и придумал идею, потом еще, потом попробовал их «в софте» и понял, что у меня появилось что-то, чем можно поделиться :) Так и получилась эта статья.

Читать далее
Всего голосов 45: ↑45 и ↓0+45
Комментарии17

Точные и быстрые вычисления для чисел с плавающей точкой на примере функции синуса. Введение и часть 1

Время на прочтение6 мин
Количество просмотров26K
Внимательно прочитал очень хорошие статьи от ArtemKaravaev по сложению чисел с плавающей точкой. Тема очень интересная и хочется её продолжить и показать на примерах, как работать с числами с плавающей точкой на практике. В качестве эталона возьмём библиотеку GNU glibc (libm). А чтобы статья не была уж скучной, добавим соревновательную составляющую: попробуем не только повторить, но и улучшить код библиотеки, сделав его более быстрым/точным.

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

В данном цикле статей планируется много всего начиная от математики, заканчивая машинными кодами и опциями компилятора. Язык написания статьи С++, но без «излишеств». В отличии от языка С, работающие примеры будут более удобочитаемыми даже для людей не знакомых с этим языком и занимать меньше строк.

Статьи будут написаны методом погружения. Будут обсуждаться подзадачи, которые потом соберутся вместе в единое решение проблемы.
Читать дальше →
Всего голосов 61: ↑60 и ↓1+59
Комментарии58

Как я регулярно улучшаю точность моделей обучения с 80% до 90+%

Время на прочтение5 мин
Количество просмотров10K

Если вы закончили хотя бы несколько собственных проектов по Data Science, вы, вероятно, уже поняли, точность в 80% — это не так уж плохо. Но для реального мира 80% уже не годятся. На деле, большинство компаний, в которых я работал, ожидают минимальную точность (или любую другую метрику, на которую они смотрят) не менее 90%.

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

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

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

Пять советов!
Всего голосов 21: ↑16 и ↓5+11
Комментарии5

Напишем и поймем Decision Tree на Python с нуля! Часть 4. Структуры данных

Время на прочтение5 мин
Количество просмотров9.8K
Данная статья — четвертая в серии. Ссылки на предыдущие статьи: первая, вторая, третья

4.1 Структуры данных


Структура данных — это представление того, как организованы отдельные данные.

Массив


image
Читать дальше →
Всего голосов 5: ↑4 и ↓1+3
Комментарии2

Game of Life с битовой магией, многопоточностью и на GPU

Время на прочтение8 мин
Количество просмотров14K

Всем привет!


Недавняя статья на Хабре в очередной раз показала неостывающий интерес к игре «Жизнь» в частности и всевозможным оптимизациям в общем. Статья и комментарии к ней, особенно любопытство к вычислениям на GPU, вдохновили меня на то, чтобы поделиться своими изысканиями на данном поприще и, забегая вперёд, скажу, что повествование пойдёт о расчётах на GPU, битовой магии, многопоточности и огромных полях для игры «Жизнь», порядка миллиарда клеток.


Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии18

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

Время на прочтение3 мин
Количество просмотров62K

Всем привет!

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

Если Вам интересны подробности, то смотрите видео или читайте статью под катом.
Всего голосов 58: ↑57 и ↓1+56
Комментарии42

Как x86_x64 адресует память

Время на прочтение8 мин
Количество просмотров24K
Сегодня я собираюсь поговорить про адресацию памяти: один, казалось бы, небольшой, и тем не менее удивительно непростой элемент семантики команд архитектуры х86_64. В особенности хочется поговорить про команду mov и то, как через только одну эту команду х86_64 пользователю становятся доступны различные методы адресации памяти.

Я не буду говорить про остальные затрагивающие память команды (то есть, благодаря CISC, почти все остальные), команды которые пишут массивные фрагменты памяти (это о тебе, fxsave), или иные касающиеся темы вопросы (модели кода, независящий от адреса код, и бинарная релокация). Я также не буду затрагивать исторические режимы адресации или режимы, которые активны при работе процессора x86_64 не в 64-битном режиме (т.е. любые отличные от long mode с 64-битным кодом).

Некоторые ограничения


Несмотря на кошмарное наследие кодирования команд х86_64, а может и благодаря ему, у адресации памяти есть некоторые ограничения.

Начнем с хорошего:

  • На достаточно высоком уровне в архитектуре х86_64 есть всего два режима адресации.
  • Все регистры в обоих режимах адресации должны быть строго одинакового размера. Другими словами, мы не можем странным образом смешивать 64, 32 и 16-битные регистры и получать актуальный адрес — в кодировании х86_64 для подобного маневра попросту нет места.
Читать дальше →
Всего голосов 35: ↑35 и ↓0+35
Комментарии117

Введение в теорию автоматического управления. Основные понятия теории управления техническим системами

Время на прочтение15 мин
Количество просмотров152K

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


Лекции по курсу «Управление Техническими Системами», читает Козлов Олег Степанович на кафедре «Ядерные реакторы и энергетические установки», факультета «Энергомашиностроения» МГТУ им. Н.Э. Баумана. За что ему огромная благодарность.


Данные лекции только готовятся к публикации в виде книги, а поскольку здесь есть специалисты по ТАУ, студенты и просто интересующиеся предметом, то любая критика привествуется.


Читать дальше →
Всего голосов 37: ↑35 и ↓2+33
Комментарии116

Интерполяция и дискретизация, зачем они нужны при проективном преобразовании изображения?

Время на прочтение9 мин
Количество просмотров13K
Привет, Хабр! Сегодня мы очень подробно расскажем о неочевидных моментах в такой, казалось бы, простой операции: исправлении проективных искажений на изображении. Как это часто оказывается в жизни, нам пришлось выбирать, что важнее: качество или скорость. И чтобы достичь некого баланса мы вспомнили об алгоритмах, которые активно исследовали еще в 80-90-е годы в рамках задачи рендеринга структур, и с тех пор редко вспоминали в контексте обработки изображений. Если интересно, заглядывайте под кат!



Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии4

Пришествие бинарных нейронных сетей на основе случайных нейронов и логических функций

Время на прочтение27 мин
Количество просмотров6.5K

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


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


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

Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии41

Программирование GPU на Java

Время на прочтение13 мин
Количество просмотров17K
Получение доступа к GPU из Java раскрывает огромную мощь. Здесь рассказывается как GPU работает и как получить доступ из Java.

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

Однажды мне показали отличия GPU от CPU вычислений, я покажу как использовать GPU в мире Java. Наконец, я опишу главные фреймворки и библиотеки доступные для написания кода на Java и запуска их на GPU, и я приведу некоторые примеры кода.
Читать дальше →
Всего голосов 16: ↑12 и ↓4+8
Комментарии7

Использование метода Монте-Карло для создания портфеля

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

В этом посте будет рассмотрено то, как оптимизировать портфель при помощи Python и симуляции Монте Карло. Под оптимизацией портфеля понимается такое соотношение весов, которое будет удовлетворять одному из условий:
Читать дальше →
Всего голосов 10: ↑7 и ↓3+4
Комментарии18

Автоматизация выявления модификаций в образе договорных документов с помощью модели N-грамм

Время на прочтение12 мин
Количество просмотров2K


Каждый современный человек знает о том, что подписывать какой-либо документ нужно не раньше, чем его прочитал. Нарушившие это несложное правило иногда удивляются неожиданным последствиям, которых можно было бы избежать, если до подписания изучить документа, включая то, что написано мелким шрифтом. Уловки в договорах со стороны поставщиков услуг используются как составная часть анекдотов и кинофильмов. Например, в фильме «Ослеплённый желаниями» главный герой расторг весьма невыгодную сделку с дьяволом, несмотря на незнание условий расторжения договора, описанного в статье 147, параграфа 3, 3-ей части договора. Подобная ситуация иногда возможна в реальной жизни с поставщиками услуг. В интернете можно найти описание курьёзных случаев, когда клиент банка изменил условия договора в свою пользу, и это явилось неожиданностью для банка. В сегодняшней статье мы расскажем про крайне полезный для банков и других кредитных организаций алгоритм, позволяющий в автоматическом режиме выявлять внесенные модификации в образах договорных документов. Так что заглядывайте под кат!
Читать дальше →
Всего голосов 5: ↑5 и ↓0+5
Комментарии2
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность