Потому что октав не умеет в CUDA, cudann и тому подобные вещи для интеграции глубоких сетей с GPU
Потому что для питона есть куча готовых моделей и на нем написан TensorFlow в который гугл вбахивает очень много
Потому что большинство статей по дип лернингу зачастую имею гитхаб репозитории с готовыми моделями на питоне.
Если рассматривать машинное обучение в целом и если есть желание поколупать математику октав ок. Но есть scikit.learn, numpy, и прочая прочая прочая
Плюс как правильно подсказывают удобные IDE
И еще python notebooks
Я в свое время прошел курс Andrew Ng, который использовал как раз octave
Потом был курс от яндекса на питоне. На питоне легче. cs231n.stanford.edu использует питон cs224d.stanford.edu использвет питон www.udacity.com/course/deep-learning--ud730 тоже использует питон
Если есть большое желание разобраться с нуля именно в дип лернинге то cs231n.stanford.edu
Если нет времени но разобраться все равно хочется, то
В общем я проверил Chainer реализацию вчера. Да, она сильно быстрее и да, она может обрабатывать бОльшие картинки.
Но для размера 1400х1020 она отжирает 9 гиг памяти.
Поэтому вопрос 10к на 10к остается открытым.
Кстати я все еще не понимаю почему для сети есть зависимость от роста изображения. Ведь размер самой сети фиксирован.
Должна же быть возможность порезать картинку на части и скармливать по отдельности. Или сделать что-то типа страйдов, чтобы сгладить переходы.
А вот по размеру картинок какие-то ограничения есть? Ну например я точно знаю что «A Neural Algorithm of Artistic Style» на амазоновских инстансах больше 700 пикселей +- не тянет. Надо или переходить на Титан Х, или использовать что-то другое.
Собственно вопрос в том, куда можно посмотреть в сторону этого другого? Если я например хочу применить стиль к картинке 10Кх10К?
Напилить микросервисы это не самая сложная задача.
Потому что буквально после двух простых рест сервисов возникнут следующие вопросы
1) Service discovery.
client side? server side? Как у Go с готовыми библиотеками под это дело? А такими которые уже опробованы в продакешене? А такими, которые опробованы в продакшене крупными компаниями аля нетфликс?
Понятное дело что можно использовать клиентов для Consul или Eureka.
2) Circuit breaker
Вот тот вот сервис подтупливает и отвечает по 1000 секунд вместо 5. Из-за этого все сервисы, которые на него завязаны тоже начинают тупить. Есть ли готовый продакшен фреймворк для go в этом случае? (Hystrix с страницей отчета)
3) Нужно сделать CRUD over REST, с пагинацией, с базовыми селектами.
Есть ли удобные и проверенные временем фреймворки для Go под это дело?
4) OAuth и сотоварищи. Насколько просто повесить на Go endpoint-ы авторизацию и аутентификацию?
5) Tracebility. Есть ли возможность *просто* отследить все сервисы через которые прошел запрос? Так, чтобы без руками пробрасывать UUID correlationID в заголовках или теле запроса?
6) Логирование. Stdout, конечно круто, а что насчет простой интеграции с ELK?
В Java мире эти вопросы закрыты более менее нормально.
Проблема не в создании микросервисов, а в оркестровке и отладке зоопарка из 20 хотя бы сервисов, каждый из которых имеет по 3-4 инстанса.
И понятное дело что в ИТ все вопросы решаемы. Но количество приседаний, которые необходимо для этого сделать очень отличатся.
И раз мы уже пытаемся минимизировать размер docker образа, почему бы не воспользоваться Erlang docker 17MB?
В котором есть let it fail, supervision trees, и отличный веб-серве cowboy.
— Ну что могу предложить, господа? Пять МП, гранаты, дают осечки — примерно 50 на 50, вот пистолеты есть: четыре вальтера, один парабеллум — это из импортного… И теперь отечественный производитель — тульский токарев, он же ТТ, сегодня один, Извини, очень быстро разбирают…
— Слушай, а откуда всё это?
— Эхо войны…
Собственно, реализацию этой возможности можно уместить ровно в одну строку.
Главное понимать, когда строка это свойство, когда — название функции, а когда — просто строка.
Разделение на map и reduce было сделано специально. Давайте представим, что buffer.length не просто buffer.length, а какое-то тяжелое вычисление. Которое надо раскинуть на кластер машин для ускорения.
В случае с явно выделенным map это будет просто и писать и читать. Если же все запихнуть в один reduce- это будет сложнее для восприятия.
Композиция функций поэтому и получилась такой мощной, что сначала мы разделили все на элементарные блоки. Их проще писать, их проще понимать, их проще тестировать.
Да, эти нюансы очень важны, но их редко где можно встретить описанными вместе. Да еще и в контексте функционального программирования. На ум приходит только Secrets of Javascript Ninja.
То же самое, что и выводом типов ;) Я хочу заинтересовать людей, чтобы они начали смотреть по сторонам. Ступившие на скользкую дорожку функционального программирования рано или поздно знакомятся с Haskell. И ленивостью, и pattern matching, и монадами с функторами. И другими страшными словами.
драфт акка буткампа от урока 1 до урока 5 первого блока
Если кому-то хочется форки приветствуются
Потому что для питона есть куча готовых моделей и на нем написан TensorFlow в который гугл вбахивает очень много
Потому что большинство статей по дип лернингу зачастую имею гитхаб репозитории с готовыми моделями на питоне.
Если рассматривать машинное обучение в целом и если есть желание поколупать математику октав ок. Но есть scikit.learn, numpy, и прочая прочая прочая
Плюс как правильно подсказывают удобные IDE
И еще python notebooks
Я в свое время прошел курс Andrew Ng, который использовал как раз octave
Потом был курс от яндекса на питоне. На питоне легче.
cs231n.stanford.edu использует питон
cs224d.stanford.edu использвет питон
www.udacity.com/course/deep-learning--ud730 тоже использует питон
Если есть большое желание разобраться с нуля именно в дип лернинге то cs231n.stanford.edu
Если нет времени но разобраться все равно хочется, то
http://brohrer.github.io/how_convolutional_neural_networks_work.html
а оверлап я точно попробую. может что-то и выйдет.
Но для размера 1400х1020 она отжирает 9 гиг памяти.
Поэтому вопрос 10к на 10к остается открытым.
Кстати я все еще не понимаю почему для сети есть зависимость от роста изображения. Ведь размер самой сети фиксирован.
Должна же быть возможность порезать картинку на части и скармливать по отдельности. Или сделать что-то типа страйдов, чтобы сгладить переходы.
Собственно вопрос в том, куда можно посмотреть в сторону этого другого? Если я например хочу применить стиль к картинке 10Кх10К?
Потому что буквально после двух простых рест сервисов возникнут следующие вопросы
1) Service discovery.
client side? server side? Как у Go с готовыми библиотеками под это дело? А такими которые уже опробованы в продакешене? А такими, которые опробованы в продакшене крупными компаниями аля нетфликс?
Понятное дело что можно использовать клиентов для Consul или Eureka.
2) Circuit breaker
Вот тот вот сервис подтупливает и отвечает по 1000 секунд вместо 5. Из-за этого все сервисы, которые на него завязаны тоже начинают тупить. Есть ли готовый продакшен фреймворк для go в этом случае? (Hystrix с страницей отчета)
3) Нужно сделать CRUD over REST, с пагинацией, с базовыми селектами.
Есть ли удобные и проверенные временем фреймворки для Go под это дело?
4) OAuth и сотоварищи. Насколько просто повесить на Go endpoint-ы авторизацию и аутентификацию?
5) Tracebility. Есть ли возможность *просто* отследить все сервисы через которые прошел запрос? Так, чтобы без руками пробрасывать UUID correlationID в заголовках или теле запроса?
6) Логирование. Stdout, конечно круто, а что насчет простой интеграции с ELK?
В Java мире эти вопросы закрыты более менее нормально.
Проблема не в создании микросервисов, а в оркестровке и отладке зоопарка из 20 хотя бы сервисов, каждый из которых имеет по 3-4 инстанса.
И понятное дело что в ИТ все вопросы решаемы. Но количество приседаний, которые необходимо для этого сделать очень отличатся.
И раз мы уже пытаемся минимизировать размер docker образа, почему бы не воспользоваться
Erlang docker 17MB?
В котором есть let it fail, supervision trees, и отличный веб-серве cowboy.
Я бы и foreach не использовал, а брал бы map/fold функции или их аналоги.
— Слушай, а откуда всё это?
— Эхо войны…
©
Главное понимать, когда строка это свойство, когда — название функции, а когда — просто строка.
В случае с явно выделенным map это будет просто и писать и читать. Если же все запихнуть в один reduce- это будет сложнее для восприятия.
Композиция функций поэтому и получилась такой мощной, что сначала мы разделили все на элементарные блоки. Их проще писать, их проще понимать, их проще тестировать.
Можно ведь и
заменить на
Чтобы совсем функцоинально. Но будет ли понятнее? :)
Внизу кстати правильно подсказали про underscore.js.
Изменяемых переменных нет.
Рекурсивный обход.
Fold чистой воды.
Красиво )