Search
Write a publication
Pull to refresh
92
0.2
Александр @AlexanderS

Техническая магия

Send message

Реализация алгоритма Левенберга-Марквардта для оптимизации нейронных сетей на TensorFlow

Reading time23 min
Views31K

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




Полгода назад друг попросил показать, как на Python сделать нейросеть. Его компания выпускает приборы для геофизических измерений. Несколько различных зондов в процессе бурения измеряют набор сигналов, связаных с параметрами окружающей скважину среды. В некоторых сложных случаях точно вычислить параметры среды по сигналам долго даже на мощном компьютере, а необходимо интерпретировать результаты измерений в полевых условиях. Возникла идея посчитать на кластере несколько сот тысяч случаев, и на них натренировать нейронную сеть. Так как нейросеть работает очень быстро, её можно использовать для определения параметров, согласующихся с измеренными сигналами, прямо в процессе бурения. Детали есть в статье:


Kushnir, D., Velker, N., Bondarenko, A., Dyatlov, G., & Dashevsky, Y. (2018, October 29). Real-Time Simulation of Deep Azimuthal Resistivity Tool in 2D Fault Model Using Neural Networks (Russian). Society of Petroleum Engineers. doi:10.2118/192573-RU


Одним вечером я показал, как keras реализовать простую нейронную сеть, и друг на работе запустил обучение на насчитанных данных. Через пару дней обсудили результат. С моей точки зрения он выглядел перспективно, но друг сказал, что нужны вычисления с точностью прибора. И если средняя квадратичная ошибка (mean squared error) получилась в районе 1, то нужна была 1е-3. На 3 порядка меньше. В тысячу раз.

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

Как спастись от «зайцев». Инструкция по борьбе с ультрафиолетом

Reading time22 min
Views71K

Однажды в далекие школьные годы у меня появилась идея заняться авто-реставрацией, благо у отца был в наличии уже практически сгнивший (но с отличным мотором) АЗЛК Москвич-408. Первым делом конечно же было решено поменять пороги и укрепить раму металлическим швеллером. Самый быстрый способ — естественно сварка, благо у отца и самодельный аппарат на Ш-образных пластинах был. Электроды и я нашел и, в принципе, довольно сносно приварил куски металла. Довольный своей работой заснул, думая о том, что я буду приваривать с утра. А с утра проснулся и понял что "ослеп", а отец поздравил "с первым пойманным зайцем". Чтобы понять о чем разговор — проследуйте под cut.


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

Загрузка конфигурации в ПЛИС через USB или разбираем FTDI MPSSE

Reading time21 min
Views22K


В жизни каждого плисовода наступает момент, когда требуется написать собственный загрузчик файла конфигурации в ПЛИС. Пришлось мне участвовать в разработке учебного стенда для кафедры одного технического вуза. Стенд предназначен для изучения цифровой обработки сигналов, хотя в рамках этой статьи это не имеет особого значения. А значение имеет то, что в основе стенда стоит ПЛИС (Altera Cyclone IV), на которой по задумке автора стенда студенты собирают всякие схемы ЦОС. Стенд подключается к компьютеру через USB. Требуется выполнить загрузку ПЛИС с компьютера через USB.

Принято решение для подключения к ПК использовать FTDI в ее двухканальной ипостаси — FT2232H. Один канал будет использован для конфигурации ПЛИС, другой может быть использован для высокоскоростного обмена в режиме FIFO.

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

Пишем загрузчик ПЛИС в LabVIEW. Часть 1

Reading time14 min
Views12K


У большинства "нормальных" программистов, мягко говоря, неоднозначное отношение к технологии LabVIEW. Тут спорить можно долго и безрезультатно. Ситуацию усугубляет то, что в сети масса примеров программ на LabVIEW, но все они ориентированы на новичка и сводятся к "ой, смотрите как все просто, соединил крутилку с индикатором, кручу ручку, меняется циферка", или в лучшем случае на график в цикле выводится случайное число или синус, все это сопровождается зубодробительным интерфейсом в виде гигантских тумблеров, крутилок и стрелочных индикаторов. Лично меня такой подход сознательного упрощения раздражает. В небольшом цикле статей я постараюсь познакомить читателя с процессом разработки прикладного ПО на LabVIEW. Для того, чтобы не уделять много времени предметной области, воспользуемся подробно описанным алгоритмом загрузки файла конфигурации в ПЛИС через FTDI в режиме MPSSE (Загрузка конфигурации в ПЛИС через USB или разбираем FTDI MPSSE). В этой статье я покажу как реализовать такой же загрузчик ПЛИС, но на языке LabVIEW.

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

Оптимизация энергопотребления STM32: практическое руководство

Reading time19 min
Views59K
Привет, Хабр!

В сети довольно много статей про работу микроконтроллеров STM32 в энергоэффективных устройствах — как правило, это устройства на батарейном питании — однако среди них прискорбно мало разбирающих эту тему за пределами перечисления энергосберегающих режимов и команд SPL/HAL, их включающих (впрочем, та же претензия относится к подавляющему большинству статей про работу с STM32).

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

Восполнять данный пробел мы будем на примере STM32L1 — контроллера весьма популярного, достаточно экономичного и при этом имеющего некоторые специфические именно для этой серии проблемы. Практически всё сказанное будет также относиться к STM32L0 и STM32L4, ну и в части общих проблем и подходов — к другим контроллерам на ядрах Cortex-M.



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

Из счетчика Гейгера, спичек и ардуины. Часть первая — теория

Reading time11 min
Views46K
Давно не проблема купить прибор под условным названием «бытовой дозиметр» (были б деньги — в этом смысле, Фукусима радиофобам и радиофилам (TM) подгадила), но думаю, что этот прибор было бы интересно сделать своими руками.

image

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

Итак, начнем.
Читать дальше →

Почему стелс в космосе все-таки есть

Reading time9 min
Views18K
Привет, Хабр! В этой статье я хочу рассмотреть тему пока что не слишком актуальную в реальности, но будоражащую умы многих любителей (и, если можно так сказать) профессионалов научной фантастики — способы спрятаться в космосе при условии использования технологий исключительно обозримого будущего.

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

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

Против стелса в космосе говорят следующие факты объективной реальности:

  1. Вакуум обладает максимальной возможной прозрачностью.
  2. Фон либо имеет температуру 4 К (реликтовое излучение), либо предсказуем (звезды).
  3. Корабль неизбежно излучает тепло произведенное внутри него и отражает, либо переизлучает солнечный свет. Особенно когда маневрирует.
  4. Чувствительности современных телескопов достаточно чтобы сделать снимок «Вояджера» за орбитой Плутона.

И что же мы можем с этим сделать? Ответ под катом.

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

Reading time9 min
Views6.6K
Статья написана под ярким впечатлением поста «Пиратство в Космосе – Коварная Delta-V и Водородные Стелс-Пароходы — Часть 1» и является альтернативным взглядом на представленную вселенную. Мы будем часто обращаться к тому, что в нем написано и писать так, чтобы не было нужды его читать.

Цель: убедить Вас что пиратство в космосе неизбежно, неуловимо и вечно. Мы рассмотрим неполный список способов грабежа и как пирату бороться с угрозами.

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

Пиратство в Космосе – Коварная Delta-V и Водородные Стелс-Пароходы — Часть 1

Reading time19 min
Views26K
Космическое пиратство, довольно популярная тема в научной фантастике. Образ космических пиратов постоянно используется в жанре научной фантастики, как некая калька с пиратов морей и океанов.

Однако давайте разберемся, возможно ли пиратство в космосе на самом деле?

Итак, что такое пиратство?


image
Китайская джонка

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

Пиратство действует в соответствии с правилами, которые делают кражу целесообразной:

  • Ценность добычи оправдывает понесенные затраты и риск нападения пиратов
  • Добычу можно оперативно реализовать
  • Обеспечена безопасность пиратов от преследования после нападения.

image

Довольно простые правила, не правда ли.

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

Особенности оконной фильтрации на ПЛИС

Reading time11 min
Views20K
Всем привет! В этой статье речь пойдет об одной важной части цифровой обработки сигналов — оконной фильтрации сигналов, в частности на ПЛИС. В статье будут показаны способы проектирования классических окон стандартной длины и «длинных» окон от 64K до 16M+ отсчетов. Основной язык разработки — VHDL, элементная база — современные кристаллы FPGA Xilinx последних семейств: это Ultrascale, Ultrascale+, 7-series. В статье будет показана реализация CORDIC — базового ядра для конфигурации оконных функций любой длительности, а также основных оконных функций. В статье рассмотрен метод проектирования с помощью языков высокого уровня С/C++ в Vivado HLS. Как обычно, в конце статьи вы найдете ссылку на исходные коды проекта.

КДПВ: типичная схема прохождения сигнала через узлы ЦОС для задач анализа спектра.


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

ДНК глазами программиста

Reading time15 min
Views93K
От переводчика: Так как я не являюсь биологом, возможны неточности в переводе терминов (и не только :). Оригинал находится здесь.

Если ты – молоток, то во всём увидишь гвоздь


Это всего лишь размышления программиста о ДНК. Я не являюсь молекулярным генетиком.

Исходный код


Находится здесь. Это не шутка. Исходники можно просмотреть с использованием замечательного набора скриптов Perl под названием "Ensembl". Геном человека занимает приблизительно 3 гигабайта, которые можно сократить до 750 мегабайт, если отбросить шелуху. Немного печалит, что это всего лишь 2.8 браузеров Mozilla Firefox.

ДНК похожа скорее не на исходники на языке C, а на байт-код для виртуальной машины под названием «ядро клетки». Крайне сомнительно, что существуют исходники, которые можно скомпилировать в этот байт-код: то, что мы видим, – это всё, что у нас есть.
Читать дальше →

Введение в криптографию и шифрование, часть первая. Лекция в Яндексе

Reading time20 min
Views261K
Чтобы сходу понимать материалы об инфраструктуре открытых ключей, сетевой безопасности и HTTPS, нужно знать основы криптографической теории. Один из самых быстрых способов изучить их — посмотреть или прочитать лекцию Владимира ivlad Иванова. Владимир — известный специалист по сетям и системам их защиты. Он долгое время работал в Яндексе, был одним из руководителей нашего департамента эксплуатации.


Мы впервые публикуем эту лекцию вместе с расшифровкой. Начнём с первой части. Под катом вы найдёте текст и часть слайдов.

ДНК. Механизмы хранения и обработки информации. Часть I

Reading time6 min
Views39K

Много людей использует термин ДНК. Но статей, нормально описывающих, как она работает почти нет (понятных не биологам). Я уже описывал в общих чертах устройство клетки и самые основы ее энергетических процессов. Теперь перейдем к ДНК.
ДНК хранит информацию. Это знают все. Но вот как она это делает?

Начнем с того, где она в клетке хранится. Примерно 98% хранится в ядре. Остальное в митохондриях и хлоропластах (в этих ребятах протекает фотосинтез). ДНК — это огромный полимер, состоящий из мономерных звеньев. Выглядит примерно так.



Что мы тут видим? Во-первых ДНК — двухцепочечная молекула. Почему это так важно — чуть позже. Далее мы видим синие пятиугольники. Это молекулы дезоксирибозы (такой сахар, чуть меньше глюкозы. От рибозы отличается отсутствием одной OH группы, что придает стабильности молекуле ДНК, в отличие от РНК, в которой используется рибоза. Дальше, для простоты опущу приставку дезокси и буду просто говорить рибоза, да простят нас щепетильные товарищи). Маленькие кружкИ — остатки фосфорной кислоты. Ну и собственно есть азотистые основания. Всего их 5, но в ДНК в основном встречаются 4. Это Аденин, Гуанин, Тимин и Цитозин. То есть, есть рибоза с которой связано азотистое основание. Вместе они образуют так называемые нуклеозиды, которые связываются друг с другом с помощью остатков фосфорной кислоты. Таким образом мы получаем длинную цепь, состоящую из мономеров. Теперь посмотрите на увеличенную левую цепь. Видите C и G соединены тремя пунктирными линиями, а T и A двумя. Что это значит? Да, ДНК состоит из двух цепей, но что удерживает их вместе? Есть такая штука, как водородная связь. Выглядит примерно так. На атомы кислорода (O) и азота (N) формируется частичный отрицательный заряд, а на водороде (H) — положительный. Это приводит к формированию слабых связей.
Читать дальше →

Написание и запуск скрипта для симуляции Verilog-кода в ModelSim

Reading time3 min
Views27K

image

Всем привет! Надеюсь, все хорошо провели праздники и готовы с новыми силами покорять высоты FPGA разработки.


Сегодня я хочу написать небольшой гайд по запуску тестбенчей на Verilog/SystemVerilog в ModelSim без использования GUI.


План будет такой:


  1. Добавление пути к ModelSim в PATH.
  2. Написание скрипта с объяснением команд.
  3. Запуск ModelSim с исполнением написанного скрипта.

Поехали!

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

Математика на пальцах: мендосинский двигатель и теорема Ирншоу

Reading time9 min
Views117K

Постановка задачи


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

Вот на этом видео крайне подробно описан (на русском языке) принцип работы:



Но ещё больше самого двигателя мне показалась любопытной следующая вещь. В описании этого видео Дмитрий Коржевский написал следующую вещь: «Боковую опору заменить магнитом НЕВОЗМОЖНО!!! Не задавайте больше этот вопрос!»

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

Факты о космосе, в которые трудно поверить

Reading time5 min
Views612K
1 апреля принято всех обманывать или подшучивать, но я пойду против традиции. Даже в этот день я не могу позволить себе обман читателей. Поэтому расскажу о реальных фактах, которые вызвали мое удивление. Разумеется, для кого-то эти факты не станут новостью, но, надеюсь, хоть что-то сможет заинтересовать каждого. И еще надеюсь, что многие, подобно мне, и вопреки заветам Шерлока Холмса, тащат в свой мозговой чердак не только нужное, но и просто интересное. Буду рад, если эта первоапрельская подборка заставит кого-нибудь забраться поглубже в источники и перепроверить мои заявления.

В космосе комнатная температура




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

Основы TCP/IP для будущих дилетантов

Reading time11 min
Views486K
Предположим, что вы плохо владеете сетевыми технологиями, и даже не знаете элементарных основ. Но вам поставили задачу: в быстрые сроки построить информационную сеть на небольшом предприятии. У вас нет ни времени, ни желания изучать толстые талмуды по проектированию сетей, инструкции по использованию сетевого оборудования и вникать в сетевую безопасность. И, главное, в дальнейшем у вас нет никакого желания становиться профессионалом в этой области. Тогда эта статья для вас.

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

Механические клавиатуры

Reading time17 min
Views768K
Все мы давно ждем массового появления всевозможных кибер-перчаток и виртуальной реальности на каждом шагу, но все равно каждый день в офисе и дома нам приходится работать за такой банальной вещью, как обычная клавиатура.

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

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

Механические клавиатуры. Путеводитель.

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

Ещё раз о задержках в исходном коде проекта FPGA или простой вопрос для собеседования на вакансию разработчика FPGA

Reading time7 min
Views14K


Некоторое время назад при обсуждении в компании профессиональных разработчиков FPGA возникла дискуссия о прохождении собеседования. Какие вопросы там задают, и что можно было бы задать. Я предложил два вопроса:

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

После этого вопроса завязалась оживлённая дискуссия, в результате которой я решил более подробно рассмотреть этот вопрос.
Читать дальше →

SamsPcbGuide, часть 7: Трассировка сигнальных линий. Дифференциальные пары

Reading time8 min
Views31K
Это седьмая статья из цикла и заключительная в блоке, посвящённом трассировке сигнальных линий. Дальше есть идея развивать проект и выходить на руководство по проектированию печатных плат в виде удобной книги, поэтому по публикациям, возможно. будет пауза. В статье рассматривается важная тема — дифференциальная схема передачи данных, получающая всё большее распространение в современных системах, и предлагаются рекомендации по трассировке дифференциальных пар, позволяющей обеспечить преимущества этой схемы.
Читать дальше →

Information

Rating
3,376-th
Location
Москва и Московская обл., Россия
Registered
Activity