Шаблон проекта глубокого обучения(Шаблон проекта DL), который упрощает процесс загрузки данных, построения сетей, моделей обучения и прогнозирования выборок.
Исходный код: https://github.com/SpikeKing/DL-Project-Template
Как пользоваться
Скачать проект
git clone https://github.com/SpikeKing/DL-Project-Template
Создавать и активировать виртуальные среды
virtualenv venv
source venv/bin/activate
Установите зависимости Python
pip install -r requirements.txt
Процесс разработки
- Определите свой собственный класс загрузки данных и наследуйте DataLoaderBase;
- Определите свой собственный класс сетевой структуры и наследуйте ModelBase;
- Определите свой собственный обучающий класс модели и наследуйте TrainerBase;
- Определите свой собственный класс прогнозирования выборки и наследуйте InferBase;
- Определите свой собственный файл конфигурации и запишите соответствующие параметры эксперимента;
Выполните модель поезда и предскажите выборочные операции.
Пример проекта
ИдентифицироватьMNISTРукописные числа в библиотеке, работыsimple_mnist
тренироваться:
python main_train.py -c configs/simple_mnist_config.json
предсказывать:
python main_test.py -c configs/simple_mnist_config.json -m simple_mnist.weights.10-0.24.hdf5
сетевая структура
TensorBoard
Инженерная архитектура
Рамки
структура папок
├── bases
│ ├── data_loader_base.py - 数据加载基类
│ ├── infer_base.py - 预测样本(推断)基类
│ ├── model_base.py - 网络结构(模型)基类
│ ├── trainer_base.py - 训练模型基类
├── configs - 配置文件夹
│ └── simple_mnist_config.json
├── data_loaders - 数据加载文件夹
│ ├── __init__.py
│ ├── simple_mnist_dl.py
├── experiments - 实验数据文件夹
│ └── simple_mnist - 实验名称
│ ├── checkpoints - 存储的模型和参数
│ │ └── simple_mnist.weights.10-0.24.hdf5
│ ├── images - 图片
│ │ └── model.png
│ └── logs - 日志,如TensorBoard
│ └── events.out.tfevents.1524034653.wang
├── infers - 推断文件夹
│ ├── __init__.py
│ ├── simple_mnist_infer.py
├── main_test.py - 预测样本入口
├── main_train.py - 训练模型入口
├── models - 网络结构文件夹
│ ├── __init__.py
│ ├── simple_mnist_model.py
├── requirements.txt - 依赖库
├── trainers - 训练模型文件夹
│ ├── __init__.py
│ ├── simple_mnist_trainer.py
└── utils - 工具文件夹
├── __init__.py
├── config_utils.py - 配置工具类
├── np_utils.py - NumPy工具类
├── utils.py - 其他工具类
основные компоненты
DataLoader
Шаги:
- Создайте свой собственный класс данных загрузки и наследуйте базовый класс DataLoaderBase;
- перезаписывать
get_train_data()
иget_test_data()
, возвращает данные обучения и тестирования;
Model
Шаги:
- Создайте свой собственный класс сетевой структуры и наследуйте базовый класс ModelBase;
- перезаписывать
build_model()
, для создания сетевой структуры; - В конструкторе вызовите
build_model()
;
Уведомление:plot_model()
Поддержка рисования сетевых структур;
Trainer
Шаги:
- Создайте свой собственный учебный класс и наследуйте базовый класс TrainerBase;
- Параметры: модель сетевой структуры, обучающие данные;
- перезаписывать
train()
подгонять данные, обучать структуру сети;
Примечание. Поддерживает вызовы обратных вызовов во время обучения, дополнительно добавляя хранилище моделей, TensorBoard, метрики FPR и т. д.
Infer
Шаги:
- Создайте свой собственный класс прогнозирования и наследуйте базовый класс InferBase;
- перезаписывать
load_model()
, обеспечивающая функцию загрузки модели; - перезаписывать
predict()
, обеспечивая функцию прогнозирования выборки;
Config
Определите параметры, необходимые в процессе обучения модели, в формате JSON, поддержку: такие параметры, как скорость обучения, эпоха, пакет и т. д.
Main
тренироваться:
- Создадим конфигурационный файл config;
- Создайте класс загрузки данных dl;
- Создайте модель класса сетевой структуры;
- Создайте тренер класса обучения, параметры - данные обучения и тестирования, модель;
- Выполнить train() тренера учебного класса;
предсказывать:
- Создадим конфигурационный файл config;
- Обработайте предсказанный образец теста;
- Создать вывод класса предсказания;
- Выполнить прогноз() класса прогнозирования infer;
благодарный
Ссылаться наTensorflow-Project-Templateпроект
By C. L. Wang @ МейтуОблачное бизнес-подразделение