?? УКРАИНА НАПАДАЕТ РОССИЙСКАЯ АРМИЯ. УБИВАЮТ ГРАЖДАНСКИХ ЖИТЕЛЕЙ. БОМБЯТ ЖИЛЫЕ РАЙОНЫ.
- Помогите Украине через:
- Благотворительный фонд Сергея Притулы
- Благотворительный фонд «Вернись живым»
- Национальный банк Украины
- Подробная информация на сайте war.ukraine.ua и МИД Украины.
Это коллекция интерактивных экспериментов по машинному обучению. Каждый эксперимент состоит из блокнота ?️ Jupyter/Colab (чтобы увидеть, как обучалась модель) и ? демо-страница (чтобы увидеть модель в действии прямо в браузере).
Вас также может заинтересовать Домашний GPT • JS
️ Этот репозиторий содержит эксперименты по машинному обучению, а не готовый к использованию, оптимизированный и доработанный код и модели, пригодный для повторного использования. Это скорее «песочница» или игровая площадка для изучения и опробования различных подходов, алгоритмов и наборов данных машинного обучения. Модели могут работать не очень хорошо, и есть место для переоснащения/недооснащения.
Большинство моделей в этих экспериментах были обучены с использованием TensorFlow 2 с поддержкой Keras.
Обучение с учителем — это когда у вас есть входные переменные X
и выходная переменная Y
, и вы используете алгоритм для изучения функции отображения от входа к выходу: Y = f(X)
. Цель состоит в том, чтобы аппроксимировать функцию отображения настолько хорошо, чтобы при наличии новых входных данных X
можно было предсказать выходные переменные Y
для этих данных. Это называется обучением с учителем, потому что процесс обучения алгоритма на основе набора обучающих данных можно рассматривать как учителя, контролирующего процесс обучения.
Многослойный перцептрон (MLP) — это класс искусственных нейронных сетей прямого распространения (ИНС). Многослойные перцептроны иногда называют «ванильными» нейронными сетями (состоящими из нескольких слоев перцептронов), особенно если они имеют один скрытый слой. Он может различать данные, которые не являются линейно разделимыми.
Эксперимент | Демонстрация модели и обучение | Теги | Набор данных | |
---|---|---|---|---|
Распознавание рукописных цифр (MLP) | MLP | МНИСТ | ||
Распознавание рукописных эскизов (MLP) | MLP | QuickDraw |
Сверточная нейронная сеть (CNN или ConvNet) — это класс глубоких нейронных сетей, чаще всего применяемых для анализа визуальных изображений (фото, видео). Они используются для обнаружения и классификации объектов на фотографиях и видео, передачи стиля, распознавания лиц, оценки позы и т. д.
Эксперимент | Демонстрация модели и обучение | Теги | Набор данных | |
---|---|---|---|---|
Распознавание рукописных цифр (CNN) | CNN | МНИСТ | ||
Распознавание рукописных эскизов (CNN) | CNN | QuickDraw | ||
Камень, ножницы, бумага (CNN) | CNN | РПС | ||
Камень, ножницы, бумага (MobilenetV2) | MobileNetV2 , Transfer learning , CNN | РПС, Имиджнет | ||
Обнаружение объектов (MobileNetV2) | MobileNetV2 , SSDLite , CNN | КОКО | ||
Классификация изображений (MobileNetV2) | MobileNetV2 , CNN | ImageNet |
Рекуррентная нейронная сеть (RNN) — это класс глубоких нейронных сетей, чаще всего применяемых к данным на основе последовательностей, таким как речь, голос, текст или музыка. Они используются для машинного перевода, распознавания речи, синтеза голоса и т. д.
Эксперимент | Демонстрация модели и обучение | Теги | Набор данных | |
---|---|---|---|---|
Суммирование чисел (RNN) | LSTM , Sequence-to-sequence | Автоматически генерируется | ||
Генерация текста Шекспира (RNN) | LSTM , Character-based RNN | Шекспир | ||
Генерация текста Википедии (RNN) | LSTM , Character-based RNN | Википедия | ||
Генерация рецептов (RNN) | LSTM , Character-based RNN | Коробка с рецептами |
Обучение без учителя — это когда у вас есть только входные данные X
и нет соответствующих выходных переменных. Целью обучения без учителя является моделирование базовой структуры или распределения данных, чтобы узнать больше о данных. Это называется обучением без учителя, потому что в отличие от обучения с учителем, описанного выше, здесь нет правильных ответов и нет учителя. Алгоритмы предоставлены сами себе, чтобы обнаружить и представить интересную структуру данных.
Генеративно-состязательная сеть (GAN) — это класс сред машинного обучения, в котором две нейронные сети соревнуются друг с другом в игре. Две модели обучаются одновременно с помощью состязательного процесса. Например, генератор («художник») учится создавать изображения, которые выглядят реальными, а дискриминатор («художник») учится отличать настоящие изображения от подделок.
Эксперимент | Демонстрация модели и обучение | Теги | Набор данных | |
---|---|---|---|---|
Поколение одежды (DCGAN) | DCGAN | Мода МНИСТ |
# Create "experiments" environment (from the project root folder).
python3 -m venv .virtualenvs/experiments
# Activate environment.
source .virtualenvs/experiments/bin/activate
# or if you use Fish...
source .virtualenvs/experiments/bin/activate.fish
Чтобы выйти из среды, запустите deactivate
.
# Upgrade pip and setuptools to the latest versions.
pip install --upgrade pip setuptools
# Install packages
pip install -r requirements.txt
Чтобы установить новые пакеты, запустите pip install package-name
. Чтобы добавить новые пакеты к требованиям, запустите pip freeze > requirements.txt
.
Чтобы поэкспериментировать с блокнотами Jupyter и посмотреть, как обучаются модели, вам необходимо запустить сервер Jupyter Notebook.
# Launch Jupyter server.
jupyter notebook
Jupyter будет доступен локально по адресу http://localhost:8888/
. Тетради с экспериментами можно найти в папке experiments
.
Демо-приложение сделано на React с помощью create-react-app.
# Switch to demos folder from project root.
cd demos
# Install all dependencies.
yarn install
# Start demo server on http.
yarn start
# Or start demo server on https (for camera access in browser to work on localhost).
yarn start-https
Демонстрационные версии будут доступны локально по адресу http://localhost:3000/
или https://localhost:3000/
.
Среда converter
используется для преобразования моделей, обученных в ходе экспериментов, из формата .h5
Keras в понятные Javascript форматы (форматы tfjs_layers_model
или tfjs_graph_model
с файлами .json
и .bin
) для дальнейшего использования с TensorFlow.js в демонстрационном приложении.
# Create "converter" environment (from the project root folder).
python3 -m venv .virtualenvs/converter
# Activate "converter" environment.
source .virtualenvs/converter/bin/activate
# or if you use Fish...
source .virtualenvs/converter/bin/activate.fish
# Install converter requirements.
pip install -r requirements.converter.txt
Преобразование моделей keras
в форматы tfjs_layers_model
/ tfjs_graph_model
выполняется tfjs-converter:
Например:
tensorflowjs_converter --input_format keras
./experiments/digits_recognition_mlp/digits_recognition_mlp.h5
./demos/public/models/digits_recognition_mlp
️ Преобразование моделей в понятные JS форматы и загрузка их напрямую в браузер может оказаться неэффективной практикой, поскольку в этом случае пользователю может потребоваться загружать в браузер десятки или сотни мегабайт данных, что неэффективно. Обычно модель обслуживается из серверной части (т. е. TensorFlow Extended), и вместо загрузки всей ее в браузер пользователь выполняет легкий HTTP-запрос для прогнозирования. Но поскольку демо-приложение — это всего лишь эксперимент, а не готовое к использованию приложение, и для простоты (чтобы не иметь работающей серверной части) мы конвертируем модели в понятные JS форматы и загружаем их непосредственно в браузер.
Рекомендуемые версии:
> 3.7.3
.>= 12.4.0
.>= 1.13.0
. Если у вас версия Python 3.7.3
вы можете столкнуться с RuntimeError: dictionary changed size during iteration
при попытке import tensorflow
(см. проблему).