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

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

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

Как подружить PyTorch и C++. Используем TorchScript

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

Около года назад разработчики PyTorch представили сообществу TorchScript — инструмент, который позволяет с помощью пары строк кода и нескольких щелчков мыши сделать из пайплайна на питоне отчуждаемое решение, которое можно встроить в систему на C++. Ниже я делюсь опытом его использования и постараюсь описать встречающиеся на этом пути подводные камни. Особенное внимание уделю реализации проекта на Windows, поскольку, хотя исследования в ML обычно делаются на Ubuntu, конечное решение часто (внезапно!) требуется под "окошками".


Примеры кода для экспорта модели и проекта на C++, использующего модель, можно найти в репозиториии на GitHub.


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

Живи. Умри. Воскресни. Повтори

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

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

Почти, да не совсем. Отличие игры от реала должно быть – ведь на работе я воспринимаю свои действия как труд, а в игре – как игру. Сформулирую вопрос так – что есть в игре, что делает её именно игрой?

Магия? Нет. Мало того, что как говорил Артур Кларк, магия не отличается от развитой технологии, так еще и большая часть игр никак на магию не завязана. Не буду тянуть: Для меня самым главным отличием мира игры от реальности – является концепция Save/Load. Именно возможность откатить время назад и переиграть, попробовав другую тактику – делает игру интересной. (Те игры, например MMORPG, где нет такого элемента, нравятся мне меньше).

Не могу сказать, правда, что мои предпочтения совпадают с предпочтениями большинства – любовь к перебору вариантов привела меня к тому, что я только три года назад наконец-то закончил сюжетную компанию в Heroes of Might and Magic II и сейчас играю в «Возрождение Эрэфии» и «Stronghold».

Ну, а вспомнил я всё это потому, что столь любимая мной концепция Save/Load появилась довольно давно. Раньше, даже, чем компьютерные игры.

В 1904 году. Хотите узнать больше? Мы продолжим:
Читать дальше →
Всего голосов 22: ↑19 и ↓3 +16
Комментарии 56

О чем я думаю, когда читаю роман «Червь» Wildbow

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

image

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


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


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


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


Остальным даже не стоит и браться.

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

Глубокое обучение на R, тренируем word2vec

Время на прочтение 10 мин
Количество просмотров 23K
Word2vec является практически единственным алгоритмом deep learning, который сравнительно легко можно запустить на обычном ПК (а не на видеокартах) и который строит распределенное представление слов за приемлемое время, по крайней мере так считают на Kaggle. Прочитав здесь про то, какие фокусы можно делать с тренированной моделью, я понял, что такую штуку просто обязан попробовать. Проблема только одна, я преимущественно работаю на языке R, а вот официальную реализацию word2vec под R мне найти не удалось, думаю её просто нет.
Читать дальше →
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 15

Майним Bitcoin с помощью бумаги и ручки

Время на прочтение 7 мин
Количество просмотров 322K
В один прекрасный момент мне захотелось прикинуть, насколько быстро можно майнить биткойны вручную. Оказалось, что для майнинга используется хеширование SHA-256, а оно достаточно простое и может быть вычислено даже без компьютера. Само собой, процесс очень небыстрый и совершенно непрактичный. Но, пройдя все шаги на бумажке, можно хорошо разобраться в деталях работы алгоритма.


Один криптографический раунд
Читать дальше →
Всего голосов 128: ↑124 и ↓4 +120
Комментарии 30

Создание бесконечного раннера на JavaScript, механика движения фона

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

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


image
Читать дальше →
Всего голосов 49: ↑33 и ↓16 +17
Комментарии 41

Методические заметки об отборе информативных признаков (feature selection)

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

Меня зовут Алексей Бурнаков. Я Data Scientist в компании Align Technology. В этом материале я расскажу вам о подходах к feature selection, которые мы практикуем в ходе экспериментов по анализу данных.

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

Данная статья предназначена для статистиков, инженеров машинного обучения и специалистов, которые интересуются вопросами обнаружения зависимостей в наборах данных. Также материал, изложенный в статье, может быть интересен широкому кругу читателей, неравнодушных к data mining. В материале не будут затронуты вопросы feature engineering и, в частности, применения таких методов как анализ главных компонент.

image
Источник.

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

Представление движений в 3D моделировании: интерполяция, аппроксимация и алгебры Ли

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

Сколько существует разных способов представить обыкновенный поворот в трехмерном пространстве? Большинство людей, когда-либо занимавшихся 3D-графикой или 3D-моделированием, сходу назовут три основных широко распространенных варианта:

  • Матрица поворота 3x3;
  • Задание поворота через углы Эйлера;
  • Кватернионы.

Люди с богатым опытом добавят сюда почему-то не пользующийся популярностью четвертый пункт:
  • Ось поворота и угол.

Мне бы хотелось рассказать о пятом способе представления вращений, который симпатичен тем, что удобен для параметризации, позволяет эффективно строить полиномиальные аппроксимации этих параметризаций, проводить сферическую интерполяцию, и главное, универсален — с минимальными изменениями он работает для любых видов движений. Если вам когда-либо был нужен метод, который позволял бы легко сделать «аналог slerp, но не для чистых вращений, а для произвольных движений, да еще и с масштабированием», то читайте эту статью.
Читать дальше →
Всего голосов 54: ↑53 и ↓1 +52
Комментарии 14

«Лапша» из callback-ов — будьте проще

Время на прочтение 3 мин
Количество просмотров 13K
По следам недавних топиков, а также постоянных рассказов в стиле «мой стартап не взлетел, потому что его зохавала лапша из callback-ов».

Как раз недавно я закончил небольшой проект (ссылку не даю, чтобы не заподозрили — кому надо см. профиль), полностью и на всех этапах написанном только на JS, и притом полностью асинхронный. Разумеется, я столкнулся с пресловутой проблемой «лапши». И, вы не поверите, совершенно спокойно решил её без всяких там фреймворков и хитрых приемов.

Итак, допустим, у нас есть задача: асинхронно выбрать из базы количество книг, потом асинхронно же выбрать из базы нужную пачку книг, потом асинхронно же выбрать из базы метаданные по книгам, а потом свести всё это в один dataset и отрендерить шаблон. Как это обычно выглядит?

Читать дальше →
Всего голосов 74: ↑63 и ↓11 +52
Комментарии 119

Как думать на SQL?

Время на прочтение 8 мин
Количество просмотров 605K
Надо “SELECT * WHERE a=b FROM c” или “SELECT WHERE a=b FROM c ON *” ?

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


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


SELECT members.firstname || ' ' || members.lastname
AS "Full Name"
FROM borrowings
INNER JOIN members
ON members.memberid=borrowings.memberid
INNER JOIN books
ON books.bookid=borrowings.bookid
WHERE borrowings.bookid IN (SELECT bookid
  FROM books
  WHERE stock>(SELECT avg(stock)
    FROM books))
GROUP BY members.firstname, members.lastname;

Буэ! Такое спугнет любого новичка, или даже разработчика среднего уровня, если он видит SQL впервые. Но не все так плохо.


Легко запомнить то, что интуитивно понятно, и с помощью этого руководства я надеюсь снизить порог входа в SQL для новичков, а уже опытным предложить по-новому взглянуть на SQL.

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

Список полезных ресурсов по Microsoft SQL Server

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

Список из 147 бесплатных и платных интернет ресурсов для изучения и работы с Microsoft SQL Server.
Статья в формате markdown на английском языке доступна на Github

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

ES6 по-человечески

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

От переводчика:
Предлагаю вашему вниманию перевод краткого (действительно краткого) руководства по ES6. В нём можно ознакомиться с основными понятиями стандарта.
Оригинальный текст в некоторых случаях был дополнен или заменён на более подходящий источник. Например, часть определения ключевого слова const является переводом документации с MDN.
Чтобы лучше разобраться в некоторых концепциях (для выполнения качественного перевода) использовалось описание стандарта на сайте MDN, руководство "You Don't Know JS: ES6 & Beyond" и учебник Ильи Кантора.


Перевод выложил на Гитхаб: https://github.com/etnolover/ES6-for-humans-translation. В случае нахождения ошибок пишите, исправлю.
Ссылка на оригинальный текст: https://github.com/metagrover/ES6-for-humans


Update 22.07.2016: добавил опрос про const


Содержание



Читать дальше →
Всего голосов 62: ↑60 и ↓2 +58
Комментарии 87

Введение в понятие энтропии и ее многоликость

Время на прочтение 5 мин
Количество просмотров 63K
image
Как может показаться, анализ сигналов и данных — тема достаточно хорошо изученная и уже сотни раз проговоренная. Но есть в ней и некоторые провалы. В последние годы словом «энтропия» бросаются все кому не лень, толком и не понимая, о чем говорят. Хаос — да, беспорядок — да, в термодинамике используется — вроде тоже да, применительно к сигналам — и тут да. Хочется хотя бы немного прояснить этот момент и дать направление тем, кто захочет узнать чуть больше об энтропии. Поговорим об энтропийном анализе данных.
Читать дальше →
Всего голосов 36: ↑34 и ↓2 +32
Комментарии 58

Собираем ваш первый WebAssembly-компонент

Время на прочтение 6 мин
Количество просмотров 29K
Когда я впервые услышал о технологии WebAssembly — она сразу показалось мне крутой вещью и мне сразу захотелось попробовать её в деле. От первого желания, до чего-то работающего мне, однако, пришлось потратить немало времени и порой испытать кое-какие разочарования. Для того, чтобы сохранить ваше время и ваши нервы, если вам захочется повторить тот же путь, и написана данная статья.

image
Предупреждение читателю

Эта статья написана 24-го июня 2016-го года. Поскольку WebAssembly очень молодая и динамично развивающаяся технология, со временем многие описанные в данной статье вещи устареют или полностью изменятся — учитывайте это.

А теперь поехали.

Что такое WebAssembly?

Официальная документация говорит следующее: «WebAssembly или wasm это новый портабельный, эффективный по размеру и скорости загрузки формат компиляции для веба». Эм-м-м-м… Что? Формат чего? Текстовый или бинарный? Да, это откровенно плохое описание. Так что убирайте уже ваши баззворд-бинго карточки и я, на основе моего опыта, дам своё определение:

«WebAssembly или wasm это спецификация байткода для написания производительных, браузеро-независимых компонентов для веба». Это определение, тоже, конечно, не вершина эпистолярного жанра, но я попробую его дополнить. WebAssembly позволяет повысить производительность с помощью использования статически типизированных переменных, которые обходятся на рантайме значительно дешевле динамических. WebAssembly разрабатывается W3C Community Group и планируется быть внедрённым во все основные браузеры. И с этого момента на стол выкладывается киллер-фича: вы сможете писать код веб-компонентов на любом языке программирования.

Теперь звучит лучше, неправда ли?
Читать дальше →
Всего голосов 48: ↑44 и ↓4 +40
Комментарии 30

Лучшие пакеты для работы с данными в R, часть 1

Время на прочтение 6 мин
Количество просмотров 10K
Есть два отличных пакета для работы с данными в R — dplyr и data.table. У каждого пакета свои сильные стороны. dplyr элегантнее и похож на естественный язык, в то время как data.table лаконичный, с его помощью многое можно сделать всего в одну строку. Более того, в некоторых случаях data.table быстрее (сравнительный анализ доступен здесь), и это может определить выбор, если есть ограничения по памяти или производительности. Сравнение dplyr и data.table можно также почитать на Stack Overflow и Quora.

Здесь можно найти руководство и краткое описание data.table, а здесь — для dplyr. Также можно почитать обучающие материалы по dplyr на DataScience+.
Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 1

R: обработка пропущенных значений

Время на прочтение 6 мин
Количество просмотров 27K
Пропущенные значения в данных — обычное в реальных задачах явление. Нужно знать, как эффективно работать с ними, если цель — уменьшить погрешность и построить точную модель. Давайте рассмотрим разные варианты обработки пропущенных значений и их реализацию.
Читать дальше →
Всего голосов 17: ↑15 и ↓2 +13
Комментарии 1

Лучшие пакеты для работы с данными в R, часть 2

Время на прочтение 5 мин
Количество просмотров 7.9K
Есть два отличных пакета для работы с данными в R — dplyr и data.table. У каждого пакета свои сильные стороны. dplyr элегантнее и похож на естественный язык, в то время как data.table лаконичный, с его помощью многое можно сделать всего в одну строку. Более того, в некоторых случаях data.table быстрее (сравнительный анализ доступен здесь), и это может определить выбор, если есть ограничения по памяти или производительности. Сравнение dplyr и data.table можно также почитать на Stack Overflow и Quora.

Здесь можно найти руководство и краткое описание data.table, а здесь — для dplyr. Также можно почитать обучающие материалы по dplyr на DataScience+.

В первой части: начало работы с данными, выбор, удаление и переименование столбцов.
Читать дальше →
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 0

Лучшие пакеты для машинного обучения в R, часть 1

Время на прочтение 5 мин
Количество просмотров 18K
Один из наиболее частых вопросов, с которыми сталкиваются специалисты по обработке и анализу данных — «Какой язык программирования лучше всего использовать для решения задач, связанных с машинным обучением?» Ответ на этот вопрос всегда приводит к сложному выбору между R, Python и MATLAB. Вообще говоря, никто не может дать объективный ответ, какой же язык программирования лучше. Конечно, язык, который вы выбираете для машинного обучения, зависит от ограничений конкретной задачи и данных, предпочтений самого специалиста и тех методов машинного обучения, которые нужно будет применить. Согласно опросу о любимом инструменте пользователей Kaggle для решения задач анализа данных R предпочитают 543 из 1714.

Сейчас в CRAN доступен 8341 пакет. Кроме CRAN, есть и другие репозитории с большим количеством пакетов. Синтаксис для установки любого из них прост: install.packages(“Name_Of_R_Package”).

Вот несколько пакетов, без которых вы вряд ли обойдетесь, как специалист по анализу данных: dplyr, ggplot2, reshape2. Безусловно, это не полный список. В этой статье мы подробнее остановимся на пакетах, применяемых в машинном обучении.
Читать дальше →
Всего голосов 12: ↑10 и ↓2 +8
Комментарии 7

Итоги Black Box Challenge

Время на прочтение 3 мин
Количество просмотров 8.2K
Привет, Хабр! Три месяца назад мы объявили о старте соревнования по машинному обучению BlackBox Challenge, а недавно оно закончилось. В этом посте организаторы соревнования расскажут о том, как всё прошло.


Вдохновившись результатами Google DeepMind по reinforcement learning, мы поняли, как здорово, когда система не использует человеческую экспертизу, а сама учится понимать окружающую среду. Мы решили сделать соревнование, в котором участникам нужно создать как раз такую систему.
Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 4

Русский нейросетевой чатбот

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



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

Читать дальше →
Всего голосов 28: ↑25 и ↓3 +22
Комментарии 73

Информация

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