Легко выбирайте параметры для слоев свертки в нейронных сетях.
Цель состоит в том, чтобы помочь вам разработать слои свертки, если вы похожи на меня и не можете думать о вещах без красивой картинки.
Здесь вы можете найти онлайн-калькулятор:
Вы также можете встроить его на свой веб-сайт — это проект JS с зависимостями от jQuery, Bootstrap и значков материалов Google. Вы можете следовать инструкциям по встраиванию его на свой веб-сайт со страницы проекта на GitHub:
Я оставлю краткое объяснение калькулятора на его о странице. В оставшейся части этой статьи я объясню, как я это сделал.
Как я это сделал
Попробуйте 1/4
Я сделал первые демонстрации в блокнотах Mathematica. Самое замечательное в Mathematica то, что, в отличие от Python, невероятно легко смешивать графики и трехмерные объекты, такие как кубы. Недостатком является, конечно, то, что он в основном останется в вашей записной книжке Mathematica (на самом деле есть способ поделиться контентом Mathematica в Интернете, но он используется недостаточно).
Попробуйте 2/4
Затем я переключился на Python. Я подумал, что могу сделать веб-приложение, используя Dash and plotly, которое показывает 3D-модели на основе кубов и позволяет пользователю изменять параметры свертки. Изучив это, мне не понравился вывод 3D-моделей таким образом — конечный продукт выглядел несуразно и не вел себя плавно, так как пытался выдать сюжет за интерактивную графику.
Попробуйте 3/4
Затем я подумал, что могу использовать Python для создания изображения SVG, которое показывается пользователю. SVG — отличный формат файла для Интернета, потому что у вас могут быть разные части, которые вы можете скрыть непосредственно из JS. SVG по сути является XML, поэтому он выглядит как HTML-код и напрямую «встраивается» в конечную статическую HTML-страницу.
Чтобы быстро писать и отлаживать код, я использовал pycairo для создания файлов SVG непосредственно из Python. Это аккуратный проект, хотя для работы только с файлами SVG в Python он не нужен.
Недостатком всей этой забавы с Python является то, что конечный продукт не может быть статической веб-страницей — Python должен где-то работать, поэтому Dash, Flask или чему-то еще нужен сервер. Для небольших проектов Heroku может быть хорошим выбором для размещения вашего веб-приложения Python, но это все же гораздо более головная боль, чем статическая страница. Статические страницы можно размещать на страницах GitHub, что бесплатно, а бесплатность — это круто.
Попробуйте 4/4
В конечном итоге это привело к реализации JS в конечном продукте. Он построен с использованием jQuery, а также использует значки Bootstrap 4 + Google Material (которые вы можете поискать здесь). Это оказалось гораздо большей головной болью, чем я ожидал, пытаясь сделать так, чтобы 3D-объект выглядел красиво через 2D-изображения SVG, включая изменение размера в окне браузера и затенение для внутренних и внешних частей, но я думаю, что конечный результат того стоит.
Вставьте его на свой сайт
Калькулятор выпущен под лицензией MIT, поэтому вы можете встроить его на свой сайт.
- Добавьте зависимости: иконки jQuery, Bootstrap 4 и Material:
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<!-- Google Material Icons -->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!-- JQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
2. Добавьте JS-файл калькулятора свертки. Я наткнулся на эту замечательную опцию jsDelivr
CDN (которая даже делает для вас уменьшенную версию), так что вы можете просто использовать:
<script src="https://cdn.jsdelivr.net/gh/smrfeld/convolution-calculator/convCalc.min.js"></script>
3. Вставьте div, в который будет загружен контент:
<div id='ccContainer'></div>
4. Наконец, запустите JS для вставки рисунка в div при загрузке страницы:
<script>
$(document).ready(function() {
// Set up
ccSetUp();
});
</script>
Это заполнит div ccContainer
.
Спасибо за прочтение — оставляйте критические замечания в комментариях или вносите свой вклад в GitHub, если вы готовы — только не будьте слишком строги к моему JS-коду :)