[PYTHON] Zufälliger Samen in TensorFlow und Numpy fixiert Etwas anders

Eine sehr irrelevante Anmerkung. TensorFlows tf.set_random_seed () scheint sich etwas anders zu verhalten als Numpysnp.random.seed (). Es scheint, dass Numpy den Startwert jedes Mal zurücksetzt, wenn "np.random.seed ()" und dieselbe Pseudozufallssequenz erneut generiert, während TensorFlow dies nicht tut.

Ich habe einen Satz geschrieben, der nicht japanisch ist, aber wenn ich den folgenden Code ausführe, kommt er wahrscheinlich durch.

import numpy as np
import tensorflow as tf

print '===== Numpy ====='
np.random.seed(0)
print np.random.uniform(size=5)
print np.random.uniform(size=5)

print 'Numpy can reset seed'
np.random.seed(0)
print np.random.uniform(size=5)
print np.random.uniform(size=5)

print '===== TensorFlow ====='
tf.set_random_seed(0)
with tf.Session() as sess:
    print sess.run(tf.random_uniform([5]))
    print sess.run(tf.random_uniform([5]))

print 'TensorFlow does not reset seed'
tf.set_random_seed(0)
with tf.Session() as sess:
    print sess.run(tf.random_uniform([5]))
    print sess.run(tf.random_uniform([5]))
===== Numpy =====
[ 0.5488135   0.71518937  0.60276338  0.54488318  0.4236548 ]
[ 0.64589411  0.43758721  0.891773    0.96366276  0.38344152]
Numpy can reset seed
[ 0.5488135   0.71518937  0.60276338  0.54488318  0.4236548 ]
[ 0.64589411  0.43758721  0.891773    0.96366276  0.38344152]

===== TensorFlow =====
I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 4
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 4
[ 0.32064009  0.69209957  0.7421422   0.86931682  0.95991254]
[ 0.70880806  0.3939954   0.67383504  0.34078181  0.98877013]
TensorFlow does not reset seed
[ 0.30350876  0.06209636  0.98059976  0.51447523  0.15706789]
[ 0.48785222  0.40416086  0.97456396  0.57969069  0.09107506]

Wenn Sie den Code vollständig erneut ausführen, wird dieselbe Pseudozufallssequenz erneut generiert, sodass die Reproduzierbarkeit des Experiments kein Problem darstellt. Wenn Sie jedoch weiterhin "% run hoge.py" auf IPython ausführen, wird der Code gesetzt. Ich war vorsichtig, weil es nicht zurückgesetzt wurde, also bemerkte ich es.

Übrigens ist R die gleiche Bezeichnung wie Numpy.

> set.seed(0)
> runif(5)
[1] 0.8966972 0.2655087 0.3721239 0.5728534 0.9082078
> set.seed(0)
> runif(5)
[1] 0.8966972 0.2655087 0.3721239 0.5728534 0.9082078

Recommended Posts

Zufälliger Samen in TensorFlow und Numpy fixiert Etwas anders
Korrigieren Sie zufällige Samen mit TensorFlow
[TensorFlow 2.x (tf.keras)] Zufälliger Startwert zur Verbesserung der Reproduzierbarkeit behoben
Ich habe mit Numpy eine Grafik mit Zufallszahlen erstellt
Erzeugung hochdimensionaler Zufallszahlenvektoren ~ Latin Hypercube Sampling / Latin Super Square Sampling ~
[Python] Memorandum über zufällige Generationen
Nicht überlappende Erzeugung ganzzahliger Zufallszahlen (0-N-1)
Zusammenfassung der Zufallszahlengenerierung durch Numpy
# Zufällige Zeichenfolgengenerierung
Ableitung der multivariaten t-Verteilung und Implementierung der Zufallszahlengenerierung durch Python
[Anmerkung] Zufällige Erstellung?
Zufällige String-Generierung (Python)
Numpys Zufallsmodul Zufällige Generierung
Entscheidungsbaum und zufälliger Wald
A1-Notation und 26-stellige Nummer
Zufälliger Samen in TensorFlow und Numpy fixiert Etwas anders
Clipping und Normalisierung in TensorFlow
Numpys Zufallsmodul Zufällige Generierung
A1-Notation und 26-stellige Nummer
Python a + = b und a = a + b sind unterschiedlich
Unterschied zwischen Numpys Randint und Randoms Randint
Erstellen Sie eine 1-MByte-Zufallszahlendatei
Zusammenfassung der Zufallszahlengenerierung durch Numpy
Random Seed Research im maschinellen Lernen
Erstellen Sie eine zufällige Zeichenfolge in Python
[Python] Vorsichtsmaßnahmen beim Ermitteln der Maximal- und Minimalwerte mit einem Numpy-Array mit einer kleinen Anzahl von Elementen