Wenn Sie das Lernen mit Keras reproduzieren, sind die Informationen, die zuerst bei der Suche und im offiziellen japanischen Dokument angezeigt werden, die Methode der alten Version, und jetzt hat sich die Methode geändert. Notieren Sie sie daher.
Ausführung
Seit Python3.2.3 kann die Reproduzierbarkeit der Hash-basierten Operation von Python durch Festlegen des Werts von PYTHONHASHSEED gewährleistet werden.
export PYTHONHASHSEED=0
Außerdem muss PYTHONHASHSEED vor der Ausführung des Programms festgelegt werden, nicht im 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
Andere Artikel sagen, dass es reproduziert werden könnte, ohne Umgebungsvariablen festzulegen, so dass es möglicherweise nicht notwendig ist. https://sanshonoki.hatenablog.com/entry/2019/01/15/230054
Auszug aus der offiziellen Dokumentenseite von Kersa. Der Code hier hat sich gegenüber der vorherigen Version geändert.
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 ...
Stellen Sie sicher, dass die Dokumentation auf die neueste Version aktualisiert ist. (Gebot)
Keras-FAQ: Wie kann ich mit Keras während der Entwicklung reproduzierbare Ergebnisse erzielen? (Gesehen am 22.09.2020)
Recommended Posts