2017-09-19 44 views
5

yılında tensorboard ve tensorboard bunu takip edebilmek için keras.callbacks.LearningRateSchedulernasıl keras kullanıyorum keras

Nasıl öğrenme geçirebiliriz oranı üzerinden özel öğrenme oranını uygulamak istediğiniz öğrenme hızı değeri sağlamak için?

lrate = LearningRateScheduler(lambda epoch: initial_lr * 0.95 ** epoch) 

tensorboard = TensorBoard(log_dir=LOGDIR, histogram_freq=1, 
          batch_size=batch_size, embeddings_freq=1, 
          embeddings_layer_names=embedding_layer_names) 

model.fit_generator(train_generator, steps_per_epoch=n_steps, 
        epochs=n_epochs, 
        validation_data=(val_x, val_y), 
        callbacks=[lrate, tensorboard]) 
+0

Aynı soruya sahip – jundl77

+0

Aynı soruyu taşıyan herkes için (farklı bir bağlamda olsa da) [bu yanıt] (https://stackoverflow.com/a/48206009/1531463) olası bir çözüm sağlar. –

cevap

1

Ben Tensorboard onu geçmek emin değilim ama piton onu izleyebilirsiniz: (keras.callbacks.TensorBoard)

Şu anda var.

from keras.callbacks import Callback 
class LossHistory(Callback): 
    def on_train_begin(self, logs={}): 
     self.losses = [] 
     self.lr = [] 

    def on_epoch_end(self, batch, logs={}): 
     self.losses.append(logs.get('loss')) 
     self.lr.append(initial_lr * 0.95 ** len(self.losses)) 

loss_hist = LossHistory() 

Sonra sadece sizin callbacks için loss_hist ekleyin.

Güncelleme:

class LRTensorBoard(TensorBoard): 

    def __init__(self, log_dir='./logs', **kwargs): 
     super(LRTensorBoard, self).__init__(log_dir, **kwargs) 

     self.lr_log_dir = log_dir 

    def set_model(self, model): 
     self.lr_writer = tf.summary.FileWriter(self.lr_log_dir) 
     super(LRTensorBoard, self).set_model(model) 

    def on_epoch_end(self, epoch, logs=None): 
     lr = initial_lr * 0.95 ** epoch 

     summary = tf.Summary(value=[tf.Summary.Value(tag='lr', 
                simple_value=lr)]) 
     self.lr_writer.add_summary(summary, epoch) 
     self.lr_writer.flush() 

     super(LRTensorBoard, self).on_epoch_end(epoch, logs) 

    def on_train_end(self, logs=None): 
     super(LRTensorBoard, self).on_train_end(logs) 
     self.lr_writer.close() 

Sadece normal bir TensorBoard gibi kullanın: this cevap dayanarak

.

İlgili konular