Как стать автором
Обновить
-17
0.1

FPGA/ASIC RTL

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

Коронавирус 2019-nCoV. FAQ по защите органов дыхания и дезинфекции

Время на прочтение16 мин
Количество просмотров583K
Китайский коронавирус, он же «пневмония Уханя» на неделе стал одной из самых горячих тем. В классической «кто виноват и что делать» меня, традиционно, волнует только вторая часть. Сегодня под катом — статья про дезинфекцию, маски и обеззараживание помещений. Объединил в одной статье несколько заметок из своего телеграм-канала. Кладем в закладки и шлем друзьям!


Стоп! 2019-nCoV
Всего голосов 103: ↑96 и ↓7+89
Комментарии409

Коронавирус: филогения, курение, летальность и снижение рисков заболеть

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


Есть ощущение, что про эпидемию COVID-19 сейчас вещают из каждого утюга. В этом плане Хабр радует хорошими постами с нормальными источниками и конструктивным обсуждением. Я тоже решила поделиться свежими препринтами на тему экспрессии ACE2 у укуренных мышей, особенностями генетики и эволюции вируса, а также рекомендациями о снижении рисков заболеть. И ещё поскольку мы занимаемся средствами для глаз в лаборатории, меня просто достали вопросами, что помогает. Если коротко — лучше всего помогает пакет на голову.
Всего голосов 117: ↑111 и ↓6+105
Комментарии196

9 четких инструментов для изучения и прокачки английской лексики

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


В Оксфордском словаре английского языка почти 450 000 слов! Но если вы учите язык как иностранный, их совсем не нужно запоминать все и сразу.

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

В этой статье мы собрали 9 шикарных инструментов, которые помогут вам учить английские слова и сделают учебную рутину интереснее. Не будем долго рассусоливать, погнали!
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии9

Помоги компилятору помочь тебе

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

Предисловие


Современные компиляторы обладают огромным количеством диагностик. И удивительно, что очень малая их часть включена по умолчанию.


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


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

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

Загрузка NumPy-массивов с диска: сравнение memmap() и Zarr/HDF5

Время на прочтение6 мин
Количество просмотров6.1K
Если ваш NumPy-массив слишком велик для того, чтобы полностью поместиться в оперативной памяти, его можно обработать, разбив на фрагменты. Сделать это можно либо в прозрачном режиме, либо явно, загружая эти фрагменты с диска по одному.



В такой ситуации можно прибегнуть к двум классам инструментов:

  • Метод NumPy memmap(), прозрачный механизм, который позволяет воспринимать файл, расположенный на диске, так, будто он весь находится в памяти. 
  • Похожие друг на друга форматы хранения данных Zarr и HDF5, которые позволяют, по необходимости, загружать с диска и сохранять на диск сжатые фрагменты массива.

У каждого из этих методов есть свои сильные и слабые стороны. 

Материал, перевод которого мы сегодня публикуем, посвящён разбору особенностей этих методов работы с данными, и рассказу о том, в каких ситуациях они могут пригодиться. В частности, особое внимание будет уделено форматам данных, которые оптимизированы для выполнения вычислений и необязательно рассчитаны на передачу этих данных другим программистам.
Читать дальше →
Всего голосов 32: ↑32 и ↓0+32
Комментарии3

WireGuard — быстрый и безопасный VPN в ядре Linux

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

Рис. 1. OpenVPN vs WireGuard, тест Ars Technica

WireGuard — свободный и открытый протокол виртуальных частных сетей, призванный заменить IPsec и OpenVPN. В январе 2020 года после полутора лет доработки кода всё-таки состоялось долгожданное событие — Линус Торвальдс принял VPN WireGuard в основную ветку Linux 5.6.

Очень скоро этот VPN станет частью ядра Linux — сердца операционной системы с открытым исходным кодом, на которой работает весь мир, от веб-серверов до телефонов Android и автомобилей. Это действительно важное событие, потому что WireGuard устроен на порядок проще и логичнее предыдущих VPN. В июне 2019 года получено автоматизированное криптографическое доказательство математики протокола.
Читать дальше →
Всего голосов 20: ↑14 и ↓6+8
Комментарии50

Сканирующее окно по массивам NumPy

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

CoLab блокнот с примерами.


Возможно сделать скользящее окно (rolling window, sliding window, moving window) по массивам NumPy на языке программирования Python без явных циклов. В данной статье рассматривается создание одно-, двух-, трех- и N-мерных скользящих окон по массивам NumPy. В результате скорость обработки данных увеличивается в несколько тысяч раз и сравнима по скорости с языком программирования С.


Cкользящее окно применяется в: обработке изображений, искусственных нейронных сетях, интернет протоколе TCP, обработке геномных данных, прогнозировании временных рядов и т.д.


Отказ от ответственности: в исходном коде могут быть ошибки! Если вы видите ошибку, пожалуйста, напишите мне.


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

Задержать COVID-19. Все про фильтрацию воздуха на случай пандемии

Время на прочтение44 мин
Количество просмотров372K
По материалам из телеграм-канала LAB66 и присоединенного к нему чата.

Это время для фактов, а не для страха. Это время для науки, а не слухов. Это время солидарности, а не охоты на ведьм…
директор ВОЗ Tedros Adhanom Ghebreyesus про эпидемию COVID-19
Прошло немного времени с момента публикации моей статьи про респираторную защиту во время эпидемии. За это время, отчасти благодаря активному обсуждению в «приканальном» чате выработалась некоторая система, которой бы я хотел поделится и с читателями хабра. Вынудило меня написать эту статью то, что из-за коронавируса поднялся нездоровый хайп, на волне которого на поверхность начала всплывать совсем не та информация, которая всплывать должна была бы (равно как и внезапно подскочили до х40 раз цены на респираторы, притом все без разбора). Так что нужно расставить точки над i. Под катом читаем про подбор правильного респиратора, про сборку кастомных фильтров и стерилизацию зараженных средств защиты. Ответы на вопросы.

Грантовая поддержка исследования
Фактически, в роли «научного грантодателя» для этой статьи выступают мои «меценаты» с Patreon. Благодаря им все и пишется. Поэтому и ответ они могут получить раньше всех других, и черновики увидеть, и даже предложить свою тему статьи. Так что, если интересно то, о чем я пишу и/или есть что сказать — поспешите стать моим «патроном» (картинка кликабельна):



Статью же настоятельно рекомендую «в закладки». Буду рад любому посильному распространению статьи. Краткий итоговый FAQ — в конце статьи.


Собираем полумаску под себя!
Всего голосов 81: ↑77 и ↓4+73
Комментарии290

Transformer в картинках

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

В прошлой статье мы рассматривали механизм внимания (attention) – чрезвычайно распространенный метод в современных моделях глубокого обучения, позволяющий улучшить показатели эффективности приложений нейронного машинного перевода. В данной статье мы рассмотрим Трансформер (Transformer) – модель, которая использует механизм внимания для повышения скорости обучения. Более того, для ряда задач Трансформеры превосходят модель нейронного машинного перевода от Google. Однако самое большое преимущество Трансформеров заключается в их высокой эффективности в условиях параллелизации (parallelization). Даже Google Cloud рекомендует использовать Трансформер в качестве модели при работе на Cloud TPU. Попробуем разобраться, из чего состоит модель и какие функции выполняет.


Впервые модель Трансформера была предложена в статье Attention is All You Need. Реализация на TensorFlow доступна как часть пакета Tensor2Tensor, кроме того, группа NLP-исследователей из Гарварда создали гид-аннотацию статьи с реализацией на PyTorch. В данном же руководстве мы попробуем максимально просто и последовательно изложить основные идеи и понятия, что, надеемся, поможет людям, не обладающим глубоким знанием предметной области, понять данную модель.

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

Обучение и оценка модели с Keras

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


Это руководство охватывает обучение, оценку и прогнозирование (выводы) моделей в TensorFlow 2.0 в двух общих ситуациях:

  • При использовании встроенных API для обучения и валидации (таких как model.fit(), model.evaluate(), model.predict()). Этому посвящен раздел «Использование встроенных циклов обучения и оценки»
  • При написании кастомных циклов с нуля с использованием eager execution и объекта GradientTape. Эти вопросы рассматриваются в разделе «Написание собственных циклов обучения и оценки с нуля».

В целом, независимо от того, используете ли вы встроенные циклы или пишете свои собственные, обучение и оценка моделей работает строго одинаково для всех видов моделей Keras: Sequential моделей, созданных с помощью Functional API, и написанных с нуля с использованием субклассирования.
Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии5

Пережевывая логистическую регрессию

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


В этой статье, мы будем разбирать теоретические выкладки преобразования функции линейной регрессии в функцию обратного логит-преобразования (иначе говорят, функцию логистического отклика). Затем, воспользовавшись арсеналом метода максимального правдоподобия, в соответствии с моделью логистической регрессии, выведем функцию потерь Logistic Loss, или другими словами, мы определим функцию, с помощью которой в модели логистической регрессии подбираются параметры вектора весов $\vec{w}$.

План статьи:

  1. Повторим о прямолинейной зависимости между двумя переменными
  2. Выявим необходимость преобразования функции линейной регрессии $ f(w,x_i) = \vec{w}^T \vec{x_i}$ в функцию логистического отклика $\sigma(\vec{w}^T \vec{x_i}) = \frac{1}{1+e^{-\vec{w}^T \vec{x_i}}}$
  3. Проведем преобразования и выведем функцию логистического отклика
  4. Попытаемся понять, чем плох метод наименьших квадратов при подборе параметров $\vec{w}$ функции Logistic Loss
  5. Используем метод максимального правдоподобия для определения функции подбора параметров $\vec{w}$:

    5.1. Случай 1: функция Logistic Loss для объектов с обозначением классов 0 и 1:

    $L_{log}(X,\vec{y},\vec{w}) = \sum\limits_{i=1}^n(-y_i \mkern 2mu log_e \mkern 5mu \sigma(\vec{w}^T \vec{x_i}) - (1-y_i) \mkern 2mu log_e \mkern 5mu (1 - \sigma(\vec{w}^T \vec{x_i})) ) \rightarrow min$



    5.2. Случай 2: функция Logistic Loss для объектов с обозначением классов -1 и +1:

    $L_{log}(X,\vec{y},\vec{w}) = \sum\limits_{i=1}^n \mkern 2mu log_e \mkern 5mu (1+e^{-y_i\vec{w}^T\vec{x_i}}) \rightarrow min$

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

Как преодолеть страх и начать использовать Azure Machine Learning

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

Я знаю многих Data Scientist-ов — да и пожалуй сам к ним отношусь — которые работают на машинах с GPU, локальных или виртуальных, расположенных в облаке, либо через Jupyter Notebook, либо через какую-то среду разработки Python. Работая в течение 2 лет экспертом-разработчиком по AI/ML я делал именно так, при этом подготавливал данные на обычном сервере или рабочей станции, а запускал обучение на виртуалке с GPU в Azure.


Конечно, мы все слышали про Azure Machine Learning — специальную облачную платформу для машинного обучения. Однако после первого же взгляда на вводные статьи, создаётся впечатление, что Azure ML создаст вам больше проблем, чем решит. Например, в упомянутом выше обучающем примере обучение на Azure ML запускается из Jupyter Notebook, при этом сам обучающий скрипт предлагается создавать и редактировать как текстовый файл в одной из ячеек — при этом не используя автодополнение, подсветку синтаксиса и другие преимущества нормальной среды разработки. По этой причине мы долгое время всерьез не использовали Azure ML в своей работе.


Однако недавно я обнаружил способ, как начать эффективно использовать Azure ML в своей работе! Интересны подробности?


Читайте дальше
Всего голосов 12: ↑9 и ↓3+6
Комментарии5

Создание динамических параметров в Jenkins job, или как сделать вашу задачу user-friendly

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

Доброго времени суток, Хабр!


Сегодня я хотел бы поделиться одним из способов, как с помощью Active Choices Plugin сделать задачу в Jenkins наиболее унифицированной и понятной для пользователя.


Введение


Такая аббревиатура как DevOps уже давно не является чем-то новым для IT сообщества. У многих людей фраза «сделать DevOps» ассоциируется с какой-то волшебной кнопкой, при нажатии на которую код приложения автоматически превращается в развернутое и протестированное приложение (все на самом деле сложнее, но мы абстрагируемся от всех процессов).


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


В нашем случае мы будем использовать Jenkins.

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

Как я учу детей Питону

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

Моя основная работа связана с данными и программированием на R, но в этой статье я хочу рассказать про своё увлечение, которое даже приносит некий доход. Мне всегда было интересно рассказывать и объяснять что-то друзьям, одноклассникам и однокурсникам. Ещё мне всегда просто было находить общий язык с детьми, не знаю, почему. Вообще, я считаю, что воспитание и обучение детей это одно из важнейших занятий из всех, да и жена у меня педагог. В общем, примерно год назад я дал объявление в местной группе на фейсбуке, набрал группу и стал преподавать скратч и питон раз в неделю. Сейчас у меня пять групп, свой класс в доме и индивидуальные занятия. Как я дошёл до жизни такой и как именно я учу детей, я раскажу в этой статье.
Читать дальше →
Всего голосов 86: ↑85 и ↓1+84
Комментарии91

SVM. Подробный разбор метода опорных векторов, реализация на python

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

Привет всем, кто выбрал путь ML-самурая!


Введение:


В данной статье рассмотрим метод опорных векторов (англ. SVM, Support Vector Machine) для задачи классификации. Будет представлена основная идея алгоритма, вывод настройки его весов и разобрана простая реализация своими руками. На примере датасета $Iris$ будет продемонстрирована работа написанного алгоритма с линейно разделимыми/неразделимыми данными в пространстве $R^2$ и визуализация обучения/прогноза. Дополнительно будут озвучены плюсы и минусы алгоритма, его модификации.


image
Рисунок 1. Фото цветка ириса из открытых источников

Читать дальше →
Всего голосов 52: ↑51 и ↓1+50
Комментарии5

Пишем драйвер для ноутбука for fun and profit, или как закоммитить в ядро даже если ты дурак

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

С чего всё началось


Начнём с постановки проблемы. Дано: один ноутбук. Новый ноутбук, геймерский. С RGB-подсветкой. Вот такой примерно ноутбук:

image
Картинка взята с lenovo.com

Есть ещё программа к этому ноутбуку. Программа как раз этой подсветкой и управляет.

Одна только проблема – программа под Windows, а хочется чтоб в любимом линуксе всё работало. И лампочки чтоб светились, и чтоб цвета красивые мелькали. Да вот только как это сделать, чтоб без реверс-инжиниринга и без написания своих драйверов? Простой ответ пришёл быстро – никак. Ну что ж, пошли писать драйвер.
Читать дальше →
Всего голосов 133: ↑132 и ↓1+131
Комментарии20

Основы deep learning на примере дебага автоэнкодера, часть №1

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

Если почитать обучение по автоэнкодерам на сайте keras.io, то один из первых посылов там звучит примерно так: на практике автоэнкодеры почти никогда не используются, но про них часто рассказывают в обучалках и народу заходит, поэтому мы решили написать свою обучалку про них:


Their main claim to fame comes from being featured in many introductory machine learning classes available online. As a result, a lot of newcomers to the field absolutely love autoencoders and can't get enough of them. This is the reason why this tutorial exists!


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


На просторах интернетов есть очень много туториалов по автоэнкодерам, нафига писать еще один? Ну, если честно, тому было несколько причин:


  • Сложилось ощущение, что на самом деле туториалов примерно 3 или 4, все остальные их переписывали своими словами;
  • Практически все — на многострадальном MNIST'е с картинками 28х28;
  • На мой скромный взгляд — они не вырабатывают интуицию о том, как это все должно работать, а просто предлагают повторить;
  • И самый главный фактор — лично у меня при замене MNIST'а на свой датасет — оно все тупо переставало работать.

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


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

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

Deep Reinforcement Learning: как научить пауков ходить

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

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


Основой решения является алгоритм Advantage Actor Critic (A2C) с оценкой Advantage через Generalized Advantage Estimation (GAE).


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


Всего голосов 26: ↑26 и ↓0+26
Комментарии22

gReebok detected. Сам себе дерматовенеролог

Время на прочтение16 мин
Количество просмотров76K
Около года назад я опубликовал свою статью Как спастись от «зайцев». Инструкция по борьбе с ультрафиолетом в которой достаточно подробно рассказал про ультрафиолет, его воздействие на ткани человека и способы лучевой защиты. Однажды на досуге я задумался над тем, в какой форме чаще всего приходится сталкиваться с «рукотворным» (т.е. не из спектра Солнца) ультрафиолетом. Вышло, что наиболее популярный УФ — это мягкий УФ и флуоресценция, которую он способен вызывать. Наиболее популярный вариант у моих дружков — это просвечивать друг друга и потом спрашивать у меня, что значит тот или иной цвет пятна на коже, и не грибок ли это. Чтобы раз и навсегда этот вопрос закрыть представляю очередной туториал. На этот раз, по диагностике кожных заболеваний ультрафиолетом лампы Вуда. Так что если интересно, как с помощью «дискотечного ультрафиолета» можно определить наличие чесотки/грибка на ногах/лишая (в том числе у любимого котика), а также про то, как лампа с aliexpress за 5$ может помочь диагностировать рак кожи и бороться с борщевиком — читаем под катом. Только наукоёмкое самоделие, с пожеланием крепкого здоровья в Наступающем 2020 году!
Закинь в закладки, %username% :)


Проверить себя и того парня лампой Вуда!
Всего голосов 98: ↑95 и ↓3+92
Комментарии43

Нечувствительные к весам нейронные сети (WANN)

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


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


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

Читать дальше →
Всего голосов 68: ↑67 и ↓1+66
Комментарии87

Информация

В рейтинге
2 341-й
Откуда
Токио, Токио, Япония
Зарегистрирован
Активность