Pull to refresh
9
0
Send message

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

Reading time12 min
Views19K

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


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


Читать дальше →
Total votes 51: ↑51 and ↓0+51
Comments6

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

Reading time7 min
Views9.9K
Не так давно, вернувшись домой с работы, где я в течении дня занимался ведением проекта коттеджного поселка – размещал на плане дороги и игровые площадки, давал указания строителям где посадить деревья и где посеять газоны, я сел за компьютер, чтоб играя в компьютерную игру – немного отдохнуть от трудного дня.

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

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

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

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

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

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

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

Reading time10 min
Views46K

image

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


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


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


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


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

Читать дальше →
Total votes 35: ↑31 and ↓4+27
Comments236

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

Reading time10 min
Views23K
Word2vec является практически единственным алгоритмом deep learning, который сравнительно легко можно запустить на обычном ПК (а не на видеокартах) и который строит распределенное представление слов за приемлемое время, по крайней мере так считают на Kaggle. Прочитав здесь про то, какие фокусы можно делать с тренированной моделью, я понял, что такую штуку просто обязан попробовать. Проблема только одна, я преимущественно работаю на языке R, а вот официальную реализацию word2vec под R мне найти не удалось, думаю её просто нет.
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments15

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

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


Один криптографический раунд
Читать дальше →
Total votes 128: ↑124 and ↓4+120
Comments30

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

Reading time5 min
Views43K

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


image
Читать дальше →
Total votes 49: ↑33 and ↓16+17
Comments41

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

Reading time39 min
Views22K
Всем привет!

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

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

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

image
Источник.

Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments6

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

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

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

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

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

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

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

Reading time3 min
Views13K
По следам недавних топиков, а также постоянных рассказов в стиле «мой стартап не взлетел, потому что его зохавала лапша из callback-ов».

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

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

Читать дальше →
Total votes 74: ↑63 and ↓11+52
Comments119

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

Reading time8 min
Views606K
Надо “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.

Читать дальше →
Total votes 54: ↑48 and ↓6+42
Comments166

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

Reading time5 min
Views46K

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

Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments29

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

Reading time11 min
Views580K

От переводчика:
Предлагаю вашему вниманию перевод краткого (действительно краткого) руководства по 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


Содержание



Читать дальше →
Total votes 62: ↑60 and ↓2+58
Comments87

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

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

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

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

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

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

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

Что такое WebAssembly?

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

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

Теперь звучит лучше, неправда ли?
Читать дальше →
Total votes 48: ↑44 and ↓4+40
Comments30

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

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

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

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

Reading time6 min
Views28K
Пропущенные значения в данных — обычное в реальных задачах явление. Нужно знать, как эффективно работать с ними, если цель — уменьшить погрешность и построить точную модель. Давайте рассмотрим разные варианты обработки пропущенных значений и их реализацию.
Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments1

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

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

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

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

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

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

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

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

Итоги Black Box Challenge

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


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

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

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



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

Читать дальше →
Total votes 28: ↑25 and ↓3+22
Comments73
1
23 ...

Information

Rating
Does not participate
Registered
Activity