2017-10-20 19 views
0

J'essaie de réduire le surajustement en ajoutant du bruit et des mutations aléatoires à mes données d'origine.Keras: comment muter des données pour chaque époque

J'ai une fonction qui mute les données de formation

x, y = generate_data() 

Je voudrais que la chaque époque de l'appeler et former mon modèle sur les nouvelles données. L'espoir est de réduire le surajustement.

history = model.fit(x, y, epochs=100, batch_size=64) 

Quelle est la meilleure façon de changer les données pour chaque nouvelle époque?

Répondre

1

Juste une supposition. Essayez:

for _ in range(num_epochs): 
    x, y = generate_data() 
    history = model.fit(x, y, epochs=1, batch_size=64) 
0

Le paramètre model.fit a un argument de lecture aléatoire et la valeur par défaut est True. Donc, il mélange les échantillons à chaque époque.

def fit(self, x, y, batch_size=32, epochs=10, verbose=1, callbacks=None, 
      validation_split=0., validation_data=None, shuffle=True, 
      class_weight=None, sample_weight=None, initial_epoch=0, **kwargs) 
+0

Cela ne fait que rendre aléatoire l'ordre des données. Je voudrais muter les données chaque fois – Karolis

+0

Tant que vous gardez votre ensemble équilibré, 'pour _ dans la gamme (num_epochs): x, y = generate_data() history = model.fit (x, y, epochs = 1 , batch_size = 64) 'peut fonctionner mais je crois que votre requête retarderait le processus d'apprentissage de votre modèle. Il peut même ne pas être convergé. – TheWho