Keras Project Template
文章翻译自 GitHub.
开始
此模板能够让你使用checkpoints和Tensorboard可视化简单地创建和训练深度学习模型。
使用此模板你必须:
- 定义一个数据载入的类
- 定义一个从BaseModel继承的模板类
- 定义一个继承的训练器类
- 定义一个配置文件,其中含有实验所需的参数
- 运行模型使用:
python main.py -c [path to configuration file]
运行一个Demo项目
简单地模型mnist数据集可用于测试此模板。运行项目样例:
- 开始训练:
python main.py -c configs/simple_mnist_config.json
- 开始Tensorboard可视化:
tensorboard --logdir=experiments/simple_mnist/logs
结合Comet.mI
此模板还支持向Comet.ml报告,这可以让你看到所有你的超参数、图、依赖项以及更多,包括实时度量。
添加你的API秘钥在配置文件当中,比如:
“comet_api_key”:“your key here”
你还可以将自己的GitHub存储库链接到comet.ml项目以进行完整版本控制。
模板细节衡量指标
项目架构
文件夹结构
|—main.py 这里是一个对整个pipeline负责的主要的实例
|
|—base 这个文件夹里包含了项目组成成分的抽象类
|||||||||—base_data_loader.py 这个文件夹包含了数据载入的抽象类
|||||||||—base_model.py 这个文件夹包含了模型的抽象类
|||||||||—base_train.py 这个文件夹包含了训练器的抽象类
|
|—model 这个文件夹包含了项目的面模型
|||||||||—simple_mnist_model.py
|
|—trainer 这个文件夹包含了项目的训练器
|||||||||—simple_mnist_trainer.py
|
|—data_loader 这个文件夹包含了项目的数据载入器
|||||||||—simple_mnist_data_loader.py
|
|—configs 这个文件夹包含了项目中实验和模型的配置
|||||||||—simple_mnist_config.json
|
|—datasets 这个文件夹可能包含了项目的数据集
|
|—utils 这个文件夹包含了一些你需要的实用工具
|||||||||—config.py 用于分析配置文件的工具函数
|||||||||—dirs.py 用于创建目录的工具函数
|||||||||—utils.py 用于分析参数的工具函数
主要部件
模型
你需要:
- 创建一个从BaseModel继承的模型类。
- 定义你的模型来覆盖build_model函数。
- 从构造函数中调用build_model函数。
训练器
你需要:
- 创建一个从BaseTrainer继承的训练器的类。
- 定义训练逻辑覆盖train函数。
注意:在每个训练的epoch之后添加功能函数来保存checkpoints或者日志以方便Keras回调Tensorboard:
- 在构造函数中声明回调数组。
- 定义一个init_callbacks函数来填充你的回调数组并在构造函数中调用它。
- 将回调数组传递给模型对象上的fit函数。
注意:你可以使用fit_generator来代替fit以支持生成新的数据batch,而不是一次加载整个数据集。
数据载入器
你需要:
- 创建一个从BaseDataLoader继承的数据载入器的类。
- 覆盖get_train_data()和get_test_data()函数来返回你的训练和册数数据集片段。
注意:如果你想在数据读取的时候每次从数据集中只读取一个batch,那么你也可以在数据载入器的类中的函数get_next_batch()定义一个不同的逻辑。
配置
你需要定义一个.json文件包含你的实验和模型的配置,比如实验名称、batch size、epoch的数量等。
主函数
负责pipeline的构建。
- 分析配置文件
- 创建数据加载器类的实例
- 创建模型类的实例
- 创建训练器类的实例
- 在训练器对象上使用“.Train()”函数训练模型
From Config
我们现在可以加载模型,而不必显式地为每个类创建一个实例。
- from_config.py:可以加载任何设置为指向要导入的正确模块/类的配置文件
- 查看config/simple_mnist_from_config.json从配置中了解这是如何工作的。运行使用:
python from_config.py -c configs/simple_mnist_from_config.json
- 查看conv_mnist_from_config.json(以及附加的数据加载器/模型)看看只使用不同的配置文件运行不同的实验有多简单:
python from_config.py -c configs/conv_mnist_from_config.json
未来工作
为Keras项目脚手架创建一个命令行工具,用户在其中定义一个数据加载器、一个模型、一个训练器,并运行该工具来生成整个项目(目前这已经在某种程度上通过加载配置文件中的每一个来完成)。