Я пытался реализовать реализацию метода оптимизации скорости обучения, описанного в этой статье «Циклические курсы обучения для обучения нейронных сетей»
Я использую пакет keras для R. В пакете keras нет реализации метода, описанного в статье, поэтому я пытаюсь выяснить, могу ли я как-то поделать.
Мне нужно «записать скорость обучения и потерю обучения для каждой партии» и обновить скорость обучения после каждой мини-партии. Я вижу, что могу хранить «историю» и, следовательно, получать потери для каждой эпохи, как показано ниже, полученные из iris tutorial от datacamp
# Initialize the sequential model
model2 <- keras_model_sequential()
# Add layers to model
model2 %>%
layer_dense(units = 8, activation = 'relu', input_shape = c(4)) %>%
layer_dense(units = 5, activation = 'relu') %>%
layer_dense(units = 3, activation = 'softmax')
# Compile the model
model2 %>% compile(
loss = 'categorical_crossentropy',
optimizer = 'adam',
metrics = 'accuracy'
)
# Fit the model to the data
history2 = model2 %>% fit(
iris.training, iris.trainLabels,
epochs = 200, batch_size = 5,
validation_split = 0.2
)
Здесь потери для каждой эпохи можно получить с помощью history2 $ metrics $ loss.
Вывод: для реализации циклических скоростей обучения мне нужно менять скорость обучения после каждой мини-партии, а также записывать наибольший спад потерь при обучении. Я просто не вижу способа сделать это в R, хотя, кажется, в python есть способ использовать какую-то функцию Callback.
Любая помощь приветствуется.