您可以使用DyTB (dynamic training bench):此工具允许您仅专注于超参数搜索,使用 tensorboard 比较各种训练模型的测量统计数据。
DyTB 为您创建一个与当前超参数集关联的唯一名称,并将其用作日志目录。
创建不同的日志目录允许使用 Tensorboard 进行轻松比较。
例如,您可以使用这一行在 Cifar10 上训练 VGG(VGG 和 Cifar10 都是一些可用的预定义模型和数据集):
import tensorflow as tf
from dytb.inputs.predefined import Cifar10
from dytb.train import train
from dytb.models.predefined.VGG import VGG
# Instantiate the model
vgg = VGG()
# Instantiate the CIFAR-10 input source
cifar10 = Cifar10.Cifar10()
# 1: Train VGG on Cifar10 for 50 epochs
# Place the train process on GPU:0
device = '/gpu:0'
with tf.device(device):
info = train(
model=vgg,
dataset=cifar10,
hyperparameters={
"epochs": 50,
"batch_size": 50,
"regularizations": {
"l2": 1e-5,
"augmentation": {
"name": "FlipLR",
"fn": tf.image.random_flip_left_right,
# factor is the estimated amount of augmentation
# that "fn" introduces.
# In this case, "fn" doubles the training set size
# Thus, an epoch is now seen as the original training
# training set size * 2
"factor": 2,
}
},
"gd": {
"optimizer": tf.train.AdamOptimizer,
"args": {
"learning_rate": 1e-3,
"beta1": 0.9,
"beta2": 0.99,
"epsilon": 1e-8
}
}
})
在此模型的训练过程中,您可以使用 tensorboard 监控损失趋势和准确率值。
使用使用的一些代表性超参数为您创建一个新文件夹:
tensorboard --logdir "log/VGG/CIFAR-10_Adam_l2=1e-05_fliplr/"
如您所见,模型的文件夹已创建,然后用于训练模型的超参数被添加为子文件夹。
这意味着如果您更改优化器(从 ADAM 到 MomentumOptimizer)或添加注释,或更改 l2 正则化参数 ecc,DyTB 会在 VGG 文件夹中创建一个子文件夹。
这允许您将测量的指标与 tensorboard 进行比较,使用模型目录为logdir,以这种方式:
tensorboard --logdir log/VGG
如需更全面的指南,请查看DyTB README.md 或python-notebook example。