Réinitialisation de poids dans Keras couche

Je voudrais réinitialiser (aléatoire), le poids de toutes les couches dans mon Keras (deep learning) modèle. La raison en est que je veux être en mesure de former le modèle plusieurs fois avec des données différentes scissions, sans avoir à faire la (lente) modèle de la recompilation à chaque fois.

Inspiré par cette discussion, je vais essayer le code suivant:

# Reset weights
for layer in KModel.layers:
    if hasattr(layer,'init'):
        input_dim = layer.input_shape[1]
        new_weights = layer.init((input_dim, layer.output_dim),name='{}_W'.format(layer.name))
        layer.trainable_weights[0].set_value(new_weights.get_value())

Cependant, seulement en partie les travaux.

En partie, parce que j'ai inspecté un calque.get_weights() les valeurs, et elles semblent changer. Mais lorsque je redémarre la formation, le coût des valeurs sont beaucoup plus faibles que le coût initial des valeurs lors de la première exécution. C'est presque comme si je l'ai réussi réinitialisation de certains poids, mais pas tous d'entre eux.

Des conseils sur les endroits où je vais mal serait vivement appréciée. Thx..

OriginalL'auteur Tor | 2016-11-08