Lors de la reproduction de l'apprentissage avec keras, les informations qui sortent en premier lors de la recherche et du document japonais officiel sont la méthode de l'ancienne version, et maintenant la méthode a changé, alors enregistrez-la.
version
Depuis python3.2.3, la reproductibilité de l'opération basée sur le hachage de python peut être garantie en corrigeant la valeur de PYTHONHASHSEED.
export PYTHONHASHSEED=0
De plus, PYTHONHASHSEED doit être défini avant l'exécution du programme, pas dans le code.
$ python -c 'import os;os.environ["PYTHONHASHSEED"]="0";print(hash("keras"))'
2834998937574676049
$ python -c 'import os;os.environ["PYTHONHASHSEED"]="0";print(hash("keras"))'
-1138434705774533911
$ PYTHONHASHSEED=0 python -c 'print(hash("keras"))'
4883664951434749476
$ PYTHONHASHSEED=0 python -c 'print(hash("keras"))'
4883664951434749476
D'autres articles disent qu'il pourrait être reproduit sans définir de variables d'environnement, donc cela peut ne pas être nécessaire. https://sanshonoki.hatenablog.com/entry/2019/01/15/230054
Extrait de la page du document officiel de Kersa. Le code ici a changé par rapport à la version précédente.
import numpy as np
import tensorflow as tf
import random as python_random
# The below is necessary for starting Numpy generated random numbers
# in a well-defined initial state.
np.random.seed(123)
# The below is necessary for starting core Python generated random numbers
# in a well-defined state.
python_random.seed(123)
# The below set_seed() will make random number generation
# in the TensorFlow backend have a well-defined initial state.
# For further details, see:
# https://www.tensorflow.org/api_docs/python/tf/random/set_seed
tf.random.set_seed(1234)
# Rest of code follows ...
Assurez-vous que la documentation est mise à jour avec la dernière version. (Commandement)
FAQ Keras: Comment puis-je obtenir des résultats reproductibles en utilisant Keras pendant le développement? (Consulté le 22/09/2020)
Recommended Posts