Пакет Keras в R, как записать скорость обучения и потери обучения для каждой партии? - PullRequest
0 голосов
/ 21 марта 2019

Я пытался реализовать реализацию метода оптимизации скорости обучения, описанного в этой статье «Циклические курсы обучения для обучения нейронных сетей»

Я использую пакет 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.

Любая помощь приветствуется.

...