Pull to refresh
139
0
Павел Галаничев @old_gamer

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

Send message

Операционные усилители: 10 схем на (почти) все случаи жизни

Reading time15 min
Views569K
Всем привет!

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


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

Машинное обучение. Нейронные сети (часть 2): Моделирование OR; XOR с помощью TensorFlow.js

Reading time6 min
Views19K
Статья является продолжением цикла статей, посвященных машинному обучению с использованием библиотеки TensorFlow.JS, в предыдущей статье приведены общая теоретическая часть обучения простейшей нейронной сети, состоящей из одного нейрона:

Машинное обучение. Нейронные сети (часть 1): Процесс обучения персептрона

В данной же статье мы с помощью нейронной сети смоделируем выполнение логических операций OR; XOR, которые являются своеобразным «Hello World» приложением для нейронных сетей.
В статье будет последовательно описан процесс такого моделирования с использованием TensorFlow.js.

Машинное обучение. Нейронные сети (часть 1): Процесс обучения персептрона

Reading time6 min
Views37K
Заранее хочу отметить, что тот кто знает как обучается персептрон — в этой статье вряд ли найдет что-то новое. Вы можете смело пропускать ее. Почему я решил это написать — я хотел бы написать цикл статей, связанных с нейронными сетями и применением TensorFlow.js, ввиду этого я не мог опустить общие теоретические выдержки. Поэтому прошу отнестись с большим терпением и пониманием к конечной задумке.

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

Например, может быть запрограммирована стратегия игры в крестики-нолики, шахмат и другое (рисунок 1).


Рисунок 1 – Классический подход решения задач

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


Рисунок 2 – Машинное обучение

Нейронные сети


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

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

Как я считал время прибытия методом Монте-Карло

Reading time6 min
Views27K
Легкий и «полупраздничный» пост. Всех причастных с праздником :)

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

Несмотря на то, что PHP не является научным языком и редко используется в исследовательских целях, метод Монте-Карло легко может быть реализован и на нём. И в данной статье я покажу как это сделать.

Задача из реальной жизни

Пару дней назад у меня должна быть встреча в 9 часов утра, за 100 миль от моего дома. В 6.30 утра я проснулся, оделся и пока я завтракал, я начал прикидывать в блокноте ближайшие пару часов. Я, как обычно, хотел приехать вовремя, поэтому я начал набрасывать маршрут: выезд из города, проселочная дорога, затем по штату на север, на восток, местная дорога на восток, проехать город, затем на снова на север и прибытие в город. Все это выглядело как-то так:

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

Склеиваем несколько фотографий в одну длинную с помощью компьютерного зрения

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

Изобретаем велосипед или пишем персептрон на С++. Часть 3

Reading time5 min
Views6K

Изобретаем велосипед или пишем персептрон на C++. Часть 3


Реализуем обучение многослойного персептрона на C++ при помощи метода обратного распространения ошибки.



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

Проект «часов Уизли» с демонстрацией местоположения членов семьи

Reading time6 min
Views29K


Я хотел удивить жену на Рождество. Она – рыжая, фанат «Гарри Поттера», а ещё и мать; всё это вдохновило меня на создание «часов Уизли». Идею я придумал в феврале, поэтому у меня было 10 месяцев на разработку и создание проекта.

Для людей, незнакомых с Гарри Поттером и семейством Уизли, поясню, что у семьи магов Уизли есть волшебные часы, которые показывают не время, а местоположение членов семьи, для каждого из которых есть своя стрелка. Вот отрывок из книги «Гарри Поттер и Кубок огня» (Дж. Роулинг, 2000):
Миссис Уизли взглянула на напольные часы, стоявшие в углу. Гарри они понравились. Если вы хотели узнать, который час, они бы вам совсем не пригодились – однако оказывались весьма полезными для кое-чего другого. У них было девять золотых стрелок, на каждой из которых было выгравировано имя одного из членов семейства Уизли. На циферблате были не цифры, а описания мест, где мог находиться каждый из членов семьи. Там были «дом», «школа», «работа», а также «в пути», «потерялся», «больница», «тюрьма»; в том месте, где у обычных часов должна была быть цифра «12», значилось «смертельная угроза». Восемь стрелок указывали на «дом», а стрелка мистера Уизли, самая длинная, всё ещё показывала на «работу».

«О, а вот и ваш отец едет!» – внезапно сказала она, вновь посмотрев на часы. Стрелка мистера Уизли вдруг начала крутиться, переходя от «работы» к «в пути», а через секунду вздрогнула и остановилась на отметке «дом» вместе со всеми остальными, и все услышали, как он зовёт их с кухни.
Читать дальше →

Распознавание мяча в волейболе с OpenCV и Tensorflow

Reading time4 min
Views7.3K
После первого опыта распознавания спортивных движений у меня зачесались руки сделать что-нибудь еще в этом направлении. Домашняя физкультура уже казалась слишком мелкой целью, так что я замахнулся на игровые виды спорта.

Применение искусственного интеллекта к спорту — недавняя тенденция, но уже есть интересные материалы:


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

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

Blender 3D для 3D печатников

Reading time2 min
Views52K
Считается, что полигоналка не подходит для вещей физического мира.

Верная позиция! Но часть задач всё-таки можно закрыть полигональным моделированием.

Собрал здесь ответы на четыре самые частые и неочевидные проблемы.

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

Равномерное перемещение объекта вдоль кривой

Reading time6 min
Views19K


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

Наверное, каждый имеющий отношение к теме знает или, по крайней мере, слышал, про кривые Безье, B-сплайны, сплайны Эрмита и прочие интерполяционные и сглаживающие сплайны и совершенно правильно предложил бы использовать в описанной ситуации один из них, но не всё так просто, как хотелось бы.
Читать дальше →

Создание браузерных 3d-игр с нуля на чистом html, css и js. Часть 2/2

Reading time43 min
Views14K
В данной статье мы продолжим создавать трехмерную браузерную игру лабиринт на чистом html, css и javascript. В предыдущей части мы сделали простой 3-мерный мир, реализовали движение, управление, столкновения игрока со статическими объектами. В этой части мы будем добавлять гравитацию, статическое солнечное освещение (без теней), загружать звуки и делать меню. Увы, как и в первой части, демок здесь не будет.
Читать дальше →

Внимание! Сознание Homo. I

Reading time19 min
Views9.9K

1. Сознательное и бессознательное


1.1 Граница между черным и белым скрывает в себе бесконечное множество оттенков серого


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

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

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

Reading time10 min
Views11K


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

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

Используем ее и мы в своем мобильном мультиплеерном шутере Dino Squad.

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

10 советов схемотехнику

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


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

Zip-файлы: история, объяснение и реализация

Reading time76 min
Views105K


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

В статье очень подробно объясняется, как работают Zip-файлы и схема сжатия: LZ77-сжатие, алгоритм Хаффмана, алгоритм Deflate и прочее. Вы узнаете историю развития технологии и посмотрите довольно эффективные примеры реализации, написанные с нуля на С. Исходный код лежит тут: hwzip-1.0.zip.
Читать дальше →

Особенности установления соединения между участниками сетевой игры типа «равный к равному»

Reading time10 min
Views12K
Это сборник информации, которая мне понадобилась, чтобы реализовать этап установления соединения между участниками сетевой игры типа «равный к равному» (peer-to-peer) с использованием протокола UDP.

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

Опытные геймдевелоперы вряд ли найдут тут для себя что-то новое. Но буду благодарен за замечания и комментарии.


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

Физика для мобильного PvP шутера, или как мы из двумерной игру в трёхмерную переделывали

Reading time19 min
Views9.5K


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

Разработка хитрого ИИ в тактической игре на основе эвристик и мутаций

Reading time17 min
Views17K
В тактических играх ИИ очень важен. Если ИИ видится как «искусственный идиот», то игру может спасти потрясающий мультиплеер, сюжет, атмосфера и графика (это неточно). Решение очевидное: делай хороший ИИ, в чём тут могут быть проблемы?

Cat terminator by CoolAI

В деталях. Ниже описаны мои шаги по конструированию сильного ИИ с характером. Не супер сильного [1], но способного быстро отработать локально в прожорливом браузере любого средне-слабого ПК. Мною применён подход экспертных систем с использованием набора эвристик и мутаций. Описаны 15 шагов постепенного преображения ИИ, каждый из шагов можно пощупать.

Сортировка «Американский флаг»

Reading time7 min
Views16K

Чтобы понять принцип действия этой «многополосной» сортировки проще для начала разобраться на примере флага с тремя полосами. А чтобы легко разобраться с трёхцветным флагом, лучше сначала посмотреть, как это работает на примере двухцветного. А чтобы разобраться с двухцветным...
Траффик

Ты только посмотри! 20 фильмов о науке и ученых

Reading time4 min
Views60K
Команда конференции Mieloconf подготовила подборку классных фильмов о науке и ученых для долгих новогодних каникул.

Про свои любимые фильмы рассказали: AI-евангелист ABBYY, автор подкаста «Проветримся» Иван Ямщиков, физик-ядерщик Дмитрий Горчаков, руководитель инфраструктурной команды в «Контуре» Алексей Кирпичников и программист Павел Аргентов.


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

Information

Rating
Does not participate
Location
Paris, Paris, Франция
Registered
Activity