2017-07-09 3 views
0

Ich möchte eine alternierende Update-Regel mit Keras verwenden. I.e. pro Batch möchte ich einen normalen gradientenbasierten Schritt aufrufen und anschließend einen benutzerdefinierten Schritt aufrufen.Eine benutzerdefinierte alternierende Update-Regel mit Keras

Ich überlegte, es zu implementieren, entweder erben ein Optimierer oder ein Rückruf (und die On-Batch-Aufrufe verwenden). Das würde aber auch nicht funktionieren, da beide Chargendaten und Chargenetiketten fehlen (und ich brauche beides).

Haben Sie eine Idee, wie Sie ein alternatives Update mit Keras implementieren?

Bei Bedarf ich nicht direkt aufrufen tensorflow spezifischen Methoden nichts, solange ich Gebrauch das Projekt mit dem keras Rahmen gewickelt halten können (mit model.fit, model.predict ..)

Antwort

0

versuchen zu erstellen eine benutzerdefinierte Callback-

import keras.callbacks as callbacks 

class JSONMetrics(callbacks.Callback): 

_model  = None 
_each_epoch = None 
_metrics = None 
_epoch  = None 
_file_json = None 

def __init__(self,model,each_epoch,logger=None): 

    self._file_json = "file_log.json" 
    self._model  = model 
    self._each_epoch= each_epoch 
    self._epoch  = 0 
    self._metrics = {'loss':[], 'acc':[]} 

def on_epoch_begin(self, epoch, logs): 
    # print('Epoch {0} begin'.format(epoch)) 
    try: 
     with open(self._file_json, 'r') as f: 
      self._metrics = json.load(f) 

def on_epoch_end(self, epoch, logs): 
    self._logger.info('Nemesis: Epoch {0} end'.format(epoch)) 

    self._metrics['loss'].append(logs.get('loss')) 
    self._metrics['acc'].append(logs.get('acc')) 
    with open(self._file_json, 'w') as f: 
     data = json.dump(self._metrics, f) 

    if self._epoch % self._each_epoch == 0: 

     file_name = 'weights%08d.h5' % self._epoch 
     #print('Saving weights at {0} file'.format(file_name)) 
     self._model.save_weights(file_name) 

    self._epoch += 1 

können Sie die self.model evozieren Ihr Problem und speichern Sie die acc und Verlust beispielsweise zu lösen.

Verwandte Themen