Я следил за учебником по тензорной доске Google с hparams здесь . Однако, когда я пытаюсь реализовать это в своей собственной модели, в журналах ничего не отображается. Основное отличие состоит в том, что я использовал генератор данных изображений, но я не вижу, как это повлияет на гиперпараметры. Я включил весь код, используемый для получения гиперпараметров, но для простоты удалил модель и базовые c пакеты, которые я импортировал.
# Load the TensorBoard notebook
%load_ext tensorboard
# Clear all logs
!rm -rf ./logs/
Вот что я установил для гиперпараметров. Просто скорость обучения и спад веса. Немного расширено из учебника, но в основном тот же стиль.
HP_lr = hp.HParam('learning_rate', hp.Discrete([3, 4, 5]))
HP_weight_decay= hp.HParam('l2_weight_decay', hp.Discrete([4, 5, 6]))
METRIC_ACCURACY = 'accuracy'
Это немного отличается от приведенных выше значений, но это просто имена переменных
# file writer
with tf.summary.create_file_writer('logs/hparam_tuning').as_default():
hp.hparams_config(
hparams=[HP_lr, HP_weight_decay],
metrics=[hp.Metric(METRIC_ACCURACY, display_name='Accuracy')],
)
У меня есть функция, которая строит модель с аргументом hparams. Помимо использования datagen.flow () в model.fit ничего не меняется.
def train_test_model(hparams):
model = build_model(hparams)
model.fit(datagen.flow(x_train, y_train, batch_size=64),
epochs=1,verbose=0)
_, accuracy = model.evaluate(x_test, y_test,batch_size=64, verbose = 1)
return accuracy
# For each run log the metrics and hyperparameters used
def run(run_dir, hparams):
with tf.summary.create_file_writer(run_dir).as_default():
hp.hparams(hparams) # record the values used in this trial
accuracy = train_test_model(hparams)
tf.summary.scalar(METRIC_ACCURACY, accuracy, step=1)
Устанавливает словарь, который будет использоваться hp
session_num = 0
for learn_rate in HP_lr.domain.values:
for wd in HP_weight_decay.domain.values:
hparams = {
HP_lr: 1*10**(-learn_rate), # transform to something like 1e-3
HP_weight_decay: 1*10**(-wd)
}
run_name = "run-%d" % session_num
print('--- Starting trial: %s' % run_name)
print({h.name: hparams[h] for h in hparams})
run('logs/hparam_tuning/' + run_name, hparams)
session_num += 1
%tensorboard --logdir logs/hparam_tuning